<?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=VanishedOne</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=VanishedOne"/>
	<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Special:Contributions/VanishedOne"/>
	<updated>2026-06-13T05:23:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29358</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29358"/>
		<updated>2022-03-12T03:02:27Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
Archive.org idDevNet link: [https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/]&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- see [[Xrays]]. (No mention of RoE&#039;s &amp;quot;skin_head_xray&amp;quot; spawnarg; use skin_xray on the head entity instead.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- see [[Xrays]].&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
DiversityPeriod -- [https://wiki.thedarkmod.com/index.php?title=Particles#DiversityPeriod]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- [https://wiki.thedarkmod.com/index.php?title=Particles#SofteningRadius]&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that. (Footprints in Written In Stone use sys.projectDecal() instead.)&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg (&#039;powered-up knockout, not used&#039; according to a def file comment).&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29357</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29357"/>
		<updated>2022-03-12T03:01:18Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* FX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
Archive.org idDevNet link: [https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/]&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- see [[Xrays]]. (No mention of RoE&#039;s &amp;quot;skin_head_xray&amp;quot; spawnarg; use skin_xray on the head entity instead.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
DiversityPeriod -- [https://wiki.thedarkmod.com/index.php?title=Particles#DiversityPeriod]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- [https://wiki.thedarkmod.com/index.php?title=Particles#SofteningRadius]&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that. (Footprints in Written In Stone use sys.projectDecal() instead.)&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg (&#039;powered-up knockout, not used&#039; according to a def file comment).&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29320</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29320"/>
		<updated>2022-03-06T17:16:14Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
Archive.org idDevNet link: [https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/]&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- see [[Xrays]]. (No mention of RoE&#039;s &amp;quot;skin_head_xray&amp;quot; spawnarg; use skin_xray on the head entity instead.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
DiversityPeriod -- [https://wiki.thedarkmod.com/index.php?title=Particles#DiversityPeriod]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- [https://wiki.thedarkmod.com/index.php?title=Particles#SofteningRadius]&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg (&#039;powered-up knockout, not used&#039; according to a def file comment).&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29319</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29319"/>
		<updated>2022-03-06T17:11:31Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
Archive.org idDevNet link: [https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/]&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- see [[Xrays]]. (No mention of RoE&#039;s &amp;quot;skin_head_xray&amp;quot; spawnarg; use skin_xray on the head entity instead.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
DiversityPeriod -- [https://wiki.thedarkmod.com/index.php?title=Particles#DiversityPeriod]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- [https://wiki.thedarkmod.com/index.php?title=Particles#SofteningRadius]&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg (&#039;powered-up knockout, not used&#039; according to a def file comment).&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29318</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=29318"/>
		<updated>2022-03-06T17:09:11Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
Archive.org idDevNet link: [https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/]&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- see [[Xrays]]. (No mention of RoE&#039;s &amp;quot;skin_head_xray&amp;quot; spawnarg; use &#039;set skin on head&#039; instead.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
DiversityPeriod -- [https://wiki.thedarkmod.com/index.php?title=Particles#DiversityPeriod]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- [https://wiki.thedarkmod.com/index.php?title=Particles#SofteningRadius]&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg (&#039;powered-up knockout, not used&#039; according to a def file comment).&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=28123</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=28123"/>
		<updated>2021-04-06T22:54:40Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Particles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
Archive.org idDevNet link: [https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/]&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
A token called &#039;inclusive&#039; seems to have been added to TDM&#039;s xrayRenderMap:&lt;br /&gt;
&lt;br /&gt;
  ts-&amp;gt;dynamic = DI_XRAY_RENDER;&lt;br /&gt;
  			//ts-&amp;gt;width = src.ParseInt();&lt;br /&gt;
  			//ts-&amp;gt;height = src.ParseInt();&lt;br /&gt;
  			ts-&amp;gt;width = 0;&lt;br /&gt;
  if ( src.ReadTokenOnLine( &amp;amp;token ) ) {&lt;br /&gt;
  				if ( !token.Icmp( &amp;quot;inclusive&amp;quot; ) ) {&lt;br /&gt;
  					ts-&amp;gt;width = 1;&lt;br /&gt;
  				}&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
DiversityPeriod -- [https://wiki.thedarkmod.com/index.php?title=Particles#DiversityPeriod]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- [https://wiki.thedarkmod.com/index.php?title=Particles#SofteningRadius]&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg (&#039;powered-up knockout, not used&#039; according to a def file comment).&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=28122</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=28122"/>
		<updated>2021-04-06T22:54:06Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Particles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
Archive.org idDevNet link: [https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/]&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
A token called &#039;inclusive&#039; seems to have been added to TDM&#039;s xrayRenderMap:&lt;br /&gt;
&lt;br /&gt;
  ts-&amp;gt;dynamic = DI_XRAY_RENDER;&lt;br /&gt;
  			//ts-&amp;gt;width = src.ParseInt();&lt;br /&gt;
  			//ts-&amp;gt;height = src.ParseInt();&lt;br /&gt;
  			ts-&amp;gt;width = 0;&lt;br /&gt;
  if ( src.ReadTokenOnLine( &amp;amp;token ) ) {&lt;br /&gt;
  				if ( !token.Icmp( &amp;quot;inclusive&amp;quot; ) ) {&lt;br /&gt;
  					ts-&amp;gt;width = 1;&lt;br /&gt;
  				}&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
DiversityPeriod -- [https://wiki.thedarkmod.com/index.php?title=Particles#DiversityPeriod]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg (&#039;powered-up knockout, not used&#039; according to a def file comment).&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=27785</id>
		<title>Doors</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Doors&amp;diff=27785"/>
		<updated>2021-03-13T03:11:26Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Initially Blocking a Door - Partially or Fully */&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, right, and left 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, such as openable windows, drawbridges, gates, etc. 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;
You can create one door/handle set and copy/paste it, but you need to take great care that all the name props are changed to match in each clone. Otherwise you get handles that fly off when a distant door moves, 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;
&lt;br /&gt;
You now have a working door but it will rotate around its center. To move the rotation point to where you want the door hinges to be:&lt;br /&gt;
* Select the door and press &#039;v&#039; to enter vertex editing mode. The door&#039;s origin will show up as a small green square in the middle of the brush.&lt;br /&gt;
* In top-down orthoview, move the origin from the center to the corner of the brush. This is easiest in drag mode (&#039;q&#039;), although you can use translate mode (&#039;w&#039;) by manually selecting the vertex first.&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;
&#039;&#039;&#039;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.&#039;&#039;&#039;&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.  Note that TDM is trying to establish the expectation that decorative doors that cannot be opened do not have handles (though not all maps follow this).&lt;br /&gt;
&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;
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. Keys can be attached to AI in two ways.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The Def_Attach Method&#039;&#039;. This uses spawnargs to spawn the key at game start.&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;
For more info on this method, see [[Attaching Props to AI]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The Bind Method&#039;&#039;. This lacks the animation finesse of def_attach, but does let you see the key in DR. The method is particularly helpful in, say, adding a second key to an AI in the back middle of a belt.&lt;br /&gt;
&lt;br /&gt;
* load a key entity&lt;br /&gt;
* position where you want it in relation to the AI, and bind it to them (i.e., &amp;quot;bind&amp;quot; &amp;quot;&amp;lt;AIname&amp;gt;&amp;quot;)&lt;br /&gt;
* Add the spawnarg &amp;quot;bindToJoint&amp;quot; &amp;quot;Hips&amp;quot; (or another location like LeftHips_Dummy; see AI for list)&lt;br /&gt;
* adjust existing spawnargs accordingly (that is, be sure the name and door&#039;s/chest&#039;s &amp;quot;used_by&amp;quot; match, if you aren&#039;t using a prefab chest w/key)&lt;br /&gt;
&lt;br /&gt;
For more info on this method, see [[Attaching_Items]] and [[BindToJoint]].&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 push 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 appropriate 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 where it is. 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 moves out of 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;
&lt;br /&gt;
&lt;br /&gt;
There are multiple ways to put sounds on doors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_open&#039;&#039; &amp;lt;br&amp;gt; &lt;br /&gt;
Sound is triggered as the door begins to open.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_opened&#039;&#039; &amp;lt;br&amp;gt; &lt;br /&gt;
Sound is triggered when the door finishes opening. Defaults to &amp;quot;nosound&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_move&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
The sound plays while the door moves.  Defaults to &amp;quot;nosound&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;snd_close&#039;&#039;  &amp;lt;br&amp;gt;&lt;br /&gt;
Sound is triggered as the door finishes closing.&lt;br /&gt;
&lt;br /&gt;
The following sounds should be left on the default sound in most cases so players clearly know what is going on:&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 or an AI 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 door is unlocked.&lt;br /&gt;
&lt;br /&gt;
You can silence any of these sounds 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;
===Sound Propagation through Doors and Doorways===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This information will change significantly with the release of 2.0.  See&#039;&#039; [[Controlling Sound Loss Across Portals]]&lt;br /&gt;
&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;
&#039;&#039;*As of 2.0 it is possible to make visportals that remain transparent when closed for gates and windows.  See&#039;&#039; [[Controlling Sound Loss Across Portals]]&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;
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;
;&amp;quot;canRemainOpen&amp;quot; :If set to 1, it&#039;s the same as &amp;quot;ai_should_not_close, with the added behavior that this is ignored if the door needs to be relocked, or the door is marked &amp;quot;shouldBeClosed&amp;quot;. &#039;&#039;&#039;(This spawnarg is available starting in TDM 2.02.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get AI to unlock/relock specific doors there are two methods:&lt;br /&gt;
&lt;br /&gt;
1. Provide the AI with the key, as detailed in [[#Keys_carried_by_AI]] above.&lt;br /&gt;
&lt;br /&gt;
2. 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;
If both (1) and (2) are used, then the AI can still go through the door after the player pickpockets the key. Otherwise, unless someone else opens the door for the AI, a typical sequence is that the AI checks their pockets for the missing key, stalls a bit at the locked door, and then (with now-better pathing algorithms) the AI uses an alternate route to the next path_corner, or &amp;quot;mentally&amp;quot; skips ahead in the route to next reachable node and goes there.&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 standing still, or circling around in front of the door helplessly.&lt;br /&gt;
&lt;br /&gt;
Place a movers &amp;gt; &#039;&#039;atdm:door_handling_position&#039;&#039; entity where you want the AI to stand while opening/closing the door from this side.&lt;br /&gt;
&lt;br /&gt;
On the door, you need to set the spawnarg &amp;quot;door_handle_position&amp;quot; &amp;quot;name_of_door_handling_position&amp;quot;. You can also place a &#039;&#039;door_handling_position&#039;&#039; on each side of the door, and the AI will automatically choose the right one. In this case, you need to set spawnargs with &amp;quot;door_handle_position_1&amp;quot; etc., and the corresponding names of the &#039;&#039;door_handling_position&#039;&#039; entities on the door.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;door_handling_position&#039;&#039; entities can also carry spawnargs that define the behaviour of the AI, which are useful for example for doors that can only be opened 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 will 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;
===Door Controllers===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Available in TDM 2.02+&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can design a door so it&#039;s operated by buttons or levers or switches (aka &#039;&#039;controllers&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
1. Set up the door in the normal manner. It can be a rotating door, a sliding door, a locked door, etc.&lt;br /&gt;
&lt;br /&gt;
2. Turn off the &amp;quot;frobable&amp;quot; spawnarg on the door. (&amp;quot;frobable&amp;quot; &amp;quot;0&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
3. Create a controller on each side of the door. If you&#039;re setting up a locked door, there&#039;s no need to put any locking information on the controllers.&lt;br /&gt;
&lt;br /&gt;
4. Give each controller the door as a target. (Alternatively, you can give the door these spawnargs: &amp;quot;door_controller1&amp;quot; &amp;quot;&amp;lt;name of controller 1&amp;gt;&amp;quot;, &amp;quot;door_controller2&amp;quot; &amp;quot;&amp;lt;name of controller 2&amp;gt;&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
When the game starts, it will transfer any locking information from the door to the controllers.&lt;br /&gt;
&lt;br /&gt;
Both the player and any AI that wants to use the door will use the controllers to operate it. Any key, &amp;quot;can_unlock&amp;quot;, or lockpick settings you would normally use at the door are now used at the controllers.&lt;br /&gt;
&lt;br /&gt;
Controllers and &#039;&#039;door_handling_position&#039;&#039; entities can be used on the same door, but in that situation the &#039;&#039;door_handling_position&#039;&#039; entities don&#039;t define where the AI stands to operate the door. They simply provide the &amp;quot;ai_no_*&amp;quot; spawnargs that define AI behavior on each side of the door.&lt;br /&gt;
&lt;br /&gt;
You may have a controller on only one side of the door. Note that, since the door is not frobable, the player and the AIs won&#039;t be able to operate the door from the non-controller side, even if that side has a &#039;&#039;door_handling_position&#039;&#039; entity.&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;
Prior to TDM 1.08, 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;
Starting in TDM 1.08, if the first AI in a door queue found the door locked, that information is remembered by the door and the last AI through uses it to relock the door, as long as they have a &amp;quot;can_unlock&amp;quot; for that door or they have a key for that 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;
==Initially Blocking a Door - Partially or Fully==&lt;br /&gt;
&#039;&#039;by Geep 2021&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Suppose you have a door that you want to start out either as unopenable, or able to open just a crack, then later, after something happens, be fully openable and operational. One method known to work:&lt;br /&gt;
&lt;br /&gt;
* Create a moveable object that the opening door runs into and tries to push.&lt;br /&gt;
* Arrange that the far side of the moveable object is jammed against some immovable worldspawn.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s two specific examples that use a wooden plank moveable:&lt;br /&gt;
&lt;br /&gt;
* In &amp;quot;Perilous Refuge&amp;quot;, a plank blocks the door leading out of the player&#039;s starting location, until the player carries it away. &lt;br /&gt;
* At the end of &amp;quot;Away0&amp;quot; (WIP 2021), the player tries to open a door. But if preconditions aren&#039;t met, the occupant seems to let the door open only a crack and complains. Blockage is done by an unseen plank resting on the floor hitting a knob of worldspawn. Preconditions met causes a &amp;quot;$plank.remove()&amp;quot; script call.&lt;br /&gt;
&lt;br /&gt;
Other methods that you might think would work but don’t:&lt;br /&gt;
&lt;br /&gt;
* Block with a func_static object, or an unjammed moveable with &amp;quot;notpushable 1&amp;quot; set. In both cases, the door travels through the object.&lt;br /&gt;
* In advance, &amp;quot;grab&amp;quot; an unjammed moveable to make it appear &amp;quot;solid&amp;quot; to the physics engine. (This was tested by having the player manipulate it; if it had worked, a “grabber” script call might suffice.)&lt;br /&gt;
* Dynamically change the door’s &amp;quot;rotate&amp;quot; limit from script using &amp;quot;setSpawnArg&amp;quot;; this function would only work before you spawn the door, not afterwards.&lt;br /&gt;
&lt;br /&gt;
(Others possibilities not yet tested:&lt;br /&gt;
&lt;br /&gt;
* Change &amp;quot;rotate&amp;quot; using the &amp;quot;setKey&amp;quot; script function; for some spawnargs this works even after spawn.&lt;br /&gt;
* Create a moveable and bind it to the world entity.&lt;br /&gt;
* If you are mainly interested in initially blocking an AI from using a door: it&#039;s possible that the AI re-reads the spawnargs for what doors it&#039;s allowed to open. Try adding a frob Response to the key (Entity -&amp;gt; Stim/Response... -&amp;gt; Response) with an effect that sets the “can_unlock&amp;quot; spawnarg on that AI to &amp;quot;-&amp;quot;.)&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 [[Triggers|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;
== Suspicious Doors ==&lt;br /&gt;
&lt;br /&gt;
If you give a door the spawnarg &#039;&#039;&#039;&amp;quot;shouldBeClosed&amp;quot; &amp;quot;1&amp;quot;&#039;&#039;&#039;, then AI will treat it as suspicious if they find the door open.&lt;br /&gt;
&lt;br /&gt;
Doors with that spawnarg should work like this:&lt;br /&gt;
&lt;br /&gt;
- an AI opening the door knows he&#039;s not to become suspicious if he opened the door&lt;br /&gt;
&lt;br /&gt;
- nearby AI alerted by the open door will also not react if they can see the door, and can see the AI that opened it&lt;br /&gt;
&lt;br /&gt;
- AI who come upon the open door later probably won&#039;t be able to see the AI that opened it, so they&#039;ll treat it as suspicious&lt;br /&gt;
&lt;br /&gt;
- if the AI who opened the door comes upon the door later, and it&#039;s still open, and no one&#039;s touched it since he opened it, he&#039;ll see his name on the door and won&#039;t become suspicious. &amp;quot;Oh, crap. I forgot to close it earlier.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
- If an AI comes upon an open door that should be closed, he should close it whether he becomes suspicious or not.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Post TDM 2.00:&#039;&#039;&#039;&lt;br /&gt;
-  AI turn to look at a door they see opening.  The player can crack open a suspicious door to peek out w/o grabbing the attention of a nearby AI. After 5s, the AI will notice the cracked open door. Non-suspicious doors can be cracked open indefinitely w/o nearby AI noticing.&lt;br /&gt;
&lt;br /&gt;
==Slanted or Tilted Doors==&lt;br /&gt;
Slanted or tilted doors can be made as follows:&lt;br /&gt;
&lt;br /&gt;
1) Place your door, preferrably one of the prefab doors, which have a model door and model handle and all the rotation spawnargs pre-set.&lt;br /&gt;
&lt;br /&gt;
2) rotate and place the door+handle model into place you want it to be. Now, if you use the door in the game, the door will rotate around the world z-axis, and not the door model z-axis (which is rotated).&lt;br /&gt;
&lt;br /&gt;
3) to get the door to rotate around the door model z-axis, you must place a model (any model will do, and it can be placed anywhere in the map). Rotate the new model into the same orientation your door model was rotated, i.e. if you door is rotated 45 degrees around the x-axis, do the same rotation on the new model.&lt;br /&gt;
&lt;br /&gt;
4) bind the doors on the new model. This makes the doors start rotating along the new model origin (which is rotated the same way as the doors).&lt;br /&gt;
&lt;br /&gt;
5) working slanted door.&lt;br /&gt;
&lt;br /&gt;
Do note, that all the rotated objects need to be models (suspicion, not tested). You can export DR built stuff into a model using the DR ase exporter script. For custom doors, remember that the exporter places the model origin at the map origin if you do not choose the &amp;quot;place origin in the middle of the object&amp;quot; option.&lt;br /&gt;
&lt;br /&gt;
Also note that the AI probably cannot use slanted doors and might get stuck (suspicion, not tested).&lt;br /&gt;
&lt;br /&gt;
There is a link to a test map here:&lt;br /&gt;
http://forums.thedarkmod.com/topic/9082-newbie-darkradiant-questions/?p=395486&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.) &#039;&#039;&#039;&amp;lt;code&amp;gt;atdm:mover_door&amp;lt;/code&amp;gt;&#039;&#039;&#039; is the entity to use.&lt;br /&gt;
&lt;br /&gt;
{{tutorial-editing}}&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27765</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27765"/>
		<updated>2021-03-03T14:55:05Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Misc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
Archive.org idDevNet link: [https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/]&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
A token called &#039;inclusive&#039; seems to have been added to TDM&#039;s xrayRenderMap:&lt;br /&gt;
&lt;br /&gt;
  ts-&amp;gt;dynamic = DI_XRAY_RENDER;&lt;br /&gt;
  			//ts-&amp;gt;width = src.ParseInt();&lt;br /&gt;
  			//ts-&amp;gt;height = src.ParseInt();&lt;br /&gt;
  			ts-&amp;gt;width = 0;&lt;br /&gt;
  if ( src.ReadTokenOnLine( &amp;amp;token ) ) {&lt;br /&gt;
  				if ( !token.Icmp( &amp;quot;inclusive&amp;quot; ) ) {&lt;br /&gt;
  					ts-&amp;gt;width = 1;&lt;br /&gt;
  				}&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg (&#039;powered-up knockout, not used&#039; according to a def file comment).&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27492</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27492"/>
		<updated>2021-02-23T14:39:56Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
Archive.org idDevNet link: [https://web.archive.org/web/20200613234848/https://www.iddevnet.com/doom3/]&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
A token called &#039;inclusive&#039; seems to have been added to TDM&#039;s xrayRenderMap:&lt;br /&gt;
&lt;br /&gt;
  ts-&amp;gt;dynamic = DI_XRAY_RENDER;&lt;br /&gt;
  			//ts-&amp;gt;width = src.ParseInt();&lt;br /&gt;
  			//ts-&amp;gt;height = src.ParseInt();&lt;br /&gt;
  			ts-&amp;gt;width = 0;&lt;br /&gt;
  if ( src.ReadTokenOnLine( &amp;amp;token ) ) {&lt;br /&gt;
  				if ( !token.Icmp( &amp;quot;inclusive&amp;quot; ) ) {&lt;br /&gt;
  					ts-&amp;gt;width = 1;&lt;br /&gt;
  				}&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27442</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27442"/>
		<updated>2021-02-23T00:06:55Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
A token called &#039;inclusive&#039; seems to have been added to TDM&#039;s xrayRenderMap:&lt;br /&gt;
&lt;br /&gt;
  ts-&amp;gt;dynamic = DI_XRAY_RENDER;&lt;br /&gt;
  			//ts-&amp;gt;width = src.ParseInt();&lt;br /&gt;
  			//ts-&amp;gt;height = src.ParseInt();&lt;br /&gt;
  			ts-&amp;gt;width = 0;&lt;br /&gt;
  if ( src.ReadTokenOnLine( &amp;amp;token ) ) {&lt;br /&gt;
  				if ( !token.Icmp( &amp;quot;inclusive&amp;quot; ) ) {&lt;br /&gt;
  					ts-&amp;gt;width = 1;&lt;br /&gt;
  				}&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27441</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27441"/>
		<updated>2021-02-22T23:56:42Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Megatextures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
Used the old ARB backend. megaTexture material token is commented out in current Material.cpp.&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27386</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=27386"/>
		<updated>2021-02-20T23:29:30Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do vertex colours work with deforms? [http://idtechforums.fuzzylogicinc.com/index.php?topic=514.msg5664#msg5664]&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
(Will this even work with the ARB backend gone, i.e. does it only require megatexture.vfp to be replaced with megatexture.vs/fs?)&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Talk:Material_Files&amp;diff=26628</id>
		<title>Talk:Material Files</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Talk:Material_Files&amp;diff=26628"/>
		<updated>2020-08-21T16:30:04Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: Created page with &amp;quot;Is a stage for the simple ambient still needed, now that the corresponding menu option is gone in 2.08? --~~~~&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Is a stage for the simple ambient still needed, now that the corresponding menu option is gone in 2.08? --[[User:VanishedOne|VanishedOne]] ([[User talk:VanishedOne|talk]]) 16:30, 21 August 2020 (UTC)&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26609</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26609"/>
		<updated>2020-08-18T17:24:19Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&#039;...using 3D textures. I found code in TDM&#039;s source to support loading such images but no corresponding material keyword to invoke it.&#039; [https://forums.thedarkmod.com/index.php?/topic/19606-tdm-engine-wishlist/&amp;amp;do=findComment&amp;amp;comment=426494]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
(Will this even work with the ARB backend gone, i.e. does it only require megatexture.vfp to be replaced with megatexture.vs/fs?)&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26598</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26598"/>
		<updated>2020-07-31T20:26:58Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
fogAlpha, sort last -- [https://wiki.thedarkmod.com/index.php?title=What%27s_new_in_TDM_2.08#Mapping]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26305</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26305"/>
		<updated>2020-03-29T18:45:15Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* GLprogs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954] &lt;br /&gt;
This is due to be made redundant by GLSL newFrob anyway.&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26304</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26304"/>
		<updated>2020-03-29T18:35:41Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- ported as of TDM 2.08. Previous comment was: some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26303</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26303"/>
		<updated>2020-03-29T18:27:58Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* AI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached. The difference is perhaps linked to the fact that TDM&#039;s melee system seems to use AFs for collision checks: if af_push_moveables is disabled the AI is immune to melee attacks (at least from the player; I haven&#039;t checked other AI&#039;s), which is why you can&#039;t melee a rat.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26299</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26299"/>
		<updated>2020-03-27T00:09:42Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== AI ==&lt;br /&gt;
&lt;br /&gt;
Behaviour noted in [https://forums.thedarkmod.com/index.php?/topic/14066-needed-for-standalone-animated-werebeast/&amp;amp;do=findComment&amp;amp;comment=366434] is not standard for an id Tech 4 game. Typically you don&#039;t see AFs when using g_showCollisionModels, and AI without AFs (e.g. the fish in Arx: EoS) don&#039;t cause a crash when approached.&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26298</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26298"/>
		<updated>2020-03-26T23:33:37Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Misc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a &amp;quot;kill_all&amp;quot; spawnarg for letting moveables kill AI.[https://bugs.thedarkmod.com/view.php?id=3358]&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26207</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26207"/>
		<updated>2020-03-18T02:14:49Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Particles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors (there&#039;s some evidence in the Prey SDK that HH fixed this for their engine version).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
cutoffTimeMap, mapLayout, collisionStatic, collisionStaticWorldOnly -- [[Particle_collisions_and_cutoff]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26206</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26206"/>
		<updated>2020-03-18T01:19:18Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. Bump/specular seems to be possible with turbulent but in the wrong, i.e. unchanged, places. (Carmack: &#039;...internally there are a number of things I consider flaws with the Doom engine, for instance, surface deforms, where you have something that&#039;s an auto-sprite or uses some other deform, that happens in the wrong place in the pipeline to get lit.&#039; [https://www.gamedev.net/forums/topic/266373-so-i-finally-took-all-of-carmacks-quakecon-speech-and-put-it-to-text-format/])&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
* &#039;Smoke&#039; particles.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26134</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26134"/>
		<updated>2020-03-02T20:44:09Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [https://forums.thedarkmod.com/index.php?/topic/11987-ocns-questions-on-tdm-editing/&amp;amp;do=findComment&amp;amp;comment=239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26131</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26131"/>
		<updated>2020-02-29T20:03:18Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Nonsolid response entities, like the candle flames, may need to have &amp;quot;[[Clipmodel contents spawnarg|clipmodel_contents]]&amp;quot; &amp;quot;131072&amp;quot; set. (Do they also need explicit &amp;quot;mins&amp;quot;/&amp;quot;maxs&amp;quot;?)&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26130</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=26130"/>
		<updated>2020-02-29T16:41:28Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Misc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
It should be possible to set the player&#039;s entity class by setting player_classname on worldspawn.[https://forums.thedarkmod.com/index.php?/topic/9082-newbie-darkradiant-questions/&amp;amp;do=findComment&amp;amp;comment=413393]&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25535</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25535"/>
		<updated>2019-10-12T15:49:41Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== AAS ==&lt;br /&gt;
&lt;br /&gt;
Apparently AAS can include &#039;swim reachabilities&#039;, but I&#039;m not sure what (if anything) can be done with them. Arx: EoS fish seem to use AAS with both swim and fly reachabilities turned on, use MOVETYPE_FLY (there being no MOVETYPE_SWIM) and have added code to limit their maximum &#039;flying&#039; height.&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25534</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25534"/>
		<updated>2019-10-12T15:41:22Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Misc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25533</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25533"/>
		<updated>2019-10-12T15:17:44Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor. A variant of shaderdemos/shadowDrawLight is in the leaked D3 alpha build, but while that build accepts the keyword, a shadowDraw light didn&#039;t look noticeably different from a regular light when spawned.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Where is ECLASS_EMITTER defined? (Seen in tdm_response_effects.script)&lt;br /&gt;
&lt;br /&gt;
  entity newEntity = sys.spawn(ECLASS_EMITTER);&lt;br /&gt;
&lt;br /&gt;
I did find ECLASS_* defs in /tools/radiant/QERTYPES.H but those are editor-related and don&#039;t include ECLASS_EMITTER, which is apparently available for scripting use.&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25532</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25532"/>
		<updated>2019-10-12T15:15:07Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] for Prey but I didn&#039;t find the string when checking the Prey .exe in a text editor.)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Where is ECLASS_EMITTER defined? (Seen in tdm_response_effects.script)&lt;br /&gt;
&lt;br /&gt;
  entity newEntity = sys.spawn(ECLASS_EMITTER);&lt;br /&gt;
&lt;br /&gt;
I did find ECLASS_* defs in /tools/radiant/QERTYPES.H but those are editor-related and don&#039;t include ECLASS_EMITTER, which is apparently available for scripting use.&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25531</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25531"/>
		<updated>2019-10-12T15:12:25Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Stim/Response */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Sent to AI when they&#039;ve been directed by the Response effect Move To Position or Move To Random Position.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Where is ECLASS_EMITTER defined? (Seen in tdm_response_effects.script)&lt;br /&gt;
&lt;br /&gt;
  entity newEntity = sys.spawn(ECLASS_EMITTER);&lt;br /&gt;
&lt;br /&gt;
I did find ECLASS_* defs in /tools/radiant/QERTYPES.H but those are editor-related and don&#039;t include ECLASS_EMITTER, which is apparently available for scripting use.&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25530</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25530"/>
		<updated>2019-10-12T15:05:55Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Misc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Emitted to what?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Where is ECLASS_EMITTER defined? (Seen in tdm_response_effects.script)&lt;br /&gt;
&lt;br /&gt;
  entity newEntity = sys.spawn(ECLASS_EMITTER);&lt;br /&gt;
&lt;br /&gt;
I did find ECLASS_* defs in /tools/radiant/QERTYPES.H but those are editor-related and don&#039;t include ECLASS_EMITTER, which is apparently available for scripting use.&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=25502</id>
		<title>Fan Missions for The Dark Mod</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=25502"/>
		<updated>2019-09-11T16:13:39Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: Omitting a mission number for Perilous Refuge until it&amp;#039;s clear what it is. We have Vitalic Fever listed as 138 but it&amp;#039;s http://www.thedarkmod.com/missiondetails/?id=139&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{infobox|&amp;lt;center&amp;gt;&#039;&#039;&#039;Big Ugly Disclaimer:&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;The Dark Mod&#039;&#039;&#039; team does not necessarily support or endorse content listed here, and only hosts missions listed on the [http://www.thedarkmod.com/ official TDM website]. This is a community maintained list, and an ongoing work in progress.  Most of the mirror links in this list are dead or are for missions that are not 2.0 compliant. Mission entries which are suspected to violate copyright must be text-only, and cannot contain links.  Report and/or remove links found in violation of this rule.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* For details about editing this table, see [[#Editing_this_table|below]].&lt;br /&gt;
* For details about how to install Fan Missions please visit: [[Installing and Running Fan Missions]]&lt;br /&gt;
* To sort by a different criterion, click the [[Image:Sort none.gif]] icon in the relevant column header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;21%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;11%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;4%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|First Release&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|Size (MB)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;3%&amp;quot;|EFX Reverb&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Series&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;13%&amp;quot;|Mission Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;6%&amp;quot;|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT NEW MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM||Perilous Refuge}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/20090-fan-mission-perilous-refuge-by-dragofer-20190910/}}&lt;br /&gt;
|2019-09-10&lt;br /&gt;
|33&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Ship, City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|138|Hidden Hands: Vitalic Fever}}&lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/20051-hidden-hands-vitalic-fever-20072019}}&lt;br /&gt;
|2019-07-20&lt;br /&gt;
|269&lt;br /&gt;
|Yes&lt;br /&gt;
|Hidden Hands 2&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spiders, undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|137|Chronicles of Skulduggery 2: A Precarious Position}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19975-fan-mission-chronicles-of-skulduggery-2-a-precarious-position-20190504/}}&lt;br /&gt;
|2019-05-04&lt;br /&gt;
|14.5&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Chronicles_of_Skulduggery_series|Chronicles of Skulduggery]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|136|William Steele 5: Commerce Bank}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19957-fan-mission-commerce-bank-by-grayman-2019410/}}&lt;br /&gt;
|2019-04-10&lt;br /&gt;
|30&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|135|Marsh of Rahena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19951-fan-mission-marsh-of-rahena-by-erh-201945}}&lt;br /&gt;
|2019-04-05&lt;br /&gt;
|60.3&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress, Horror &lt;br /&gt;
|Undead, Spiders, Horror Themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|134|Shadows of Northdale ACT 2}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19936-fan-mission-shadows-of-northdale-act-ii-by-goldwell-20190320/}} [https://www.youtube.com/watch?v=KO-eIOX9nqI Briefing]&lt;br /&gt;
|2019-03-20&lt;br /&gt;
|417&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|133|Cleaning Up the Neighbourhood}}&lt;br /&gt;
|some1stoleit and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19898-fan-mission-cleaning-up-the-neighbourhood-by-some1stoleitbikerdude-20190219/}}&lt;br /&gt;
|2019-02-18&lt;br /&gt;
|34.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|132|Hidden Hands: Initiation}}&lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19796-hidden-hands-initiation-27122018/}}&lt;br /&gt;
|2018-12-27&lt;br /&gt;
|92.5&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt;Ship&lt;br /&gt;
|Spiders, Extra-natural entities&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|131|The Night of Reluctant Benefaction}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19787-fan-mission-the-night-of-reluctant-benefaction/}}&lt;br /&gt;
|2018-12-24&lt;br /&gt;
|11.9&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|130|Mission of Mercy}}&lt;br /&gt;
|joebarnin&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19642-fan-mission-mission-of-mercy-by-joebarnin-20180914/}}&lt;br /&gt;
|2018-09-14&lt;br /&gt;
|10.1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|129|William Steele 4: The Warrens}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19618-fan-mission-the-warrens-by-grayman-201891/}}&lt;br /&gt;
|2018-09-01&lt;br /&gt;
|53&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|128|Braeden Church}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19533-fan-mission-braeden-church-by-grayman-201871/}}&lt;br /&gt;
|2018-07-01&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|127|Chronicles of Skulduggery: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19439-chronicles-of-skulduggery-pearls-and-swine/}}&lt;br /&gt;
|2018-05-25&lt;br /&gt;
|23&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Chronicles_of_Skulduggery_series|Chronicles of Skulduggery]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|126|Shadows of Northdale ACT I}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19368-fan-mission-shadows-of-northdale-act-i-by-goldwell-20180323/}} [https://www.youtube.com/watch?v=p4nP3lYd6wg Briefing]&lt;br /&gt;
|2018-03-23&lt;br /&gt;
|295&lt;br /&gt;
|Custom &amp;lt;br&amp;gt;(not EFX)&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|125|Sir Taffsalot&#039;s Sword}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19361-fan-mission-sir-taffsalots-sword-by-grayman-2018318/}}&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; In memoriam of Gary (Sir Taffsalot) {{Forumlink|http://forums.thedarkmod.com/topic/19306-sad-news-we-lost-one-of-our-own-sir-taffsalot/}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|124|The Arena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19350-fan-mission-the-arena-by-erh/}}&lt;br /&gt;
|2018-03-12&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Arena Deathmatch &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|123|The Elixir}}&lt;br /&gt;
|Bikerdude and Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19323-fan-mission-the-elixir-by-b1k3rdude-obsttorte-17022018/}} [https://www.youtube.com/watch?v=KfElYZs-FaE Briefing]&lt;br /&gt;
|2018-02-17&lt;br /&gt;
|112&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|122|Volta 2: Cauldron of the Gods}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19207-volta-ii-cauldron-of-the-gods/}} [https://www.youtube.com/watch?v=SRRCRVFHruc Briefing]&lt;br /&gt;
|2017-11-30&lt;br /&gt;
|252&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|121|In the Black}}&lt;br /&gt;
|VanishedOne&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19185-fan-mission-in-the-black/}}&lt;br /&gt;
|2017-11-18&lt;br /&gt;
|103&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|120|Accountant 1: Thieves and Heirs}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19164-fan-mission-the-accountant-1-thieves-and-heirs-by-goldwell-20171108}} [https://www.youtube.com/watch?v=Tk9DtOT4kjc Briefing]&lt;br /&gt;
|2017-11-08&lt;br /&gt;
|247&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|119|King of the Mountain}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19105-fan-mission-king-of-the-mountain-by-spoonman-18092017/}}&lt;br /&gt;
|2017-09-18&lt;br /&gt;
|8.07&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|118|Briarwood Manor}}&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18980-fan-mission-briarwood-manor-by-neonsstyle-first-mission-2017-07-11}} [https://www.youtube.com/watch?v=BZnSuLVatYM Trailer] [https://www.youtube.com/watch?v=CPlu8fEzyGM Briefing]&lt;br /&gt;
|2017-07-11&lt;br /&gt;
|90&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spider&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|117|A Matter of Hours}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18809-fan-mission-a-matter-of-hours-by-springheel-2842017/}}&lt;br /&gt;
|2017-04-28&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan Mission Series#Corbin series|Corbin]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|116|The Ravine}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18782-fan-mission-the-ravine-by-spoonman-17042017/}}&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|30.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|115|The Bakery Job}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18707-fan-mission-the-bakery-job-by-sotha-20170309/}}&lt;br /&gt;
|2017-03-09&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM||Mission 1: A New Job}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18647-tdm-205-official-introductory-missions/}}&lt;br /&gt;
|2017-03-14&lt;br /&gt;
|13.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|114|Coercion}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18405-fan-mission-coercion-by-sotha-20160927}}&lt;br /&gt;
|2016-09-27&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|113|Down by the Riverside}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18402-fan-mission-down-by-the-riverside-by-dragofer-20160925}}&lt;br /&gt;
|2016-09-25&lt;br /&gt;
|56&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Horror themes, Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|112|Penny Dreadful 3: Erasing the Trail}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18200-fan-mission-penny-dreadful-3-by-melan-and-bikerdude-20160710}}&lt;br /&gt;
|2016-07-09&lt;br /&gt;
|200&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|111|Volta 1: Volta and the Stone}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016}}&lt;br /&gt;
|2016-05-27&lt;br /&gt;
|102&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|110|Full Moon Fever}}&amp;lt;br&amp;gt;(v2.0 2018/02/21)&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18066-fan-mission-full-moon-fever-by-spoonman-14052016/}}&lt;br /&gt;
|2016-05-14&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|109|King of Diamonds}}&lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18064-fan-mission-the-king-of-diamonds-by-spooks-20160513}}&lt;br /&gt;
|2016-05-13&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|Occult themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|108|Accountant 2: New in Town}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18054-fan-mission-the-accountant-2-new-in-town-by-goldwell-20160509/}} [https://www.youtube.com/watch?v=xeuIO_GcYjQ Briefing] &amp;lt;br&amp;gt; [https://www.youtube.com/watch?v=w6e_SJ0_JOM Gameplay trailer] &lt;br /&gt;
|2016-05-08&lt;br /&gt;
|358&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|107|The Smiling Cutpurse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17850-fan-mission-the-smiling-cutpurse-by-airship-ballet-20160325/}}&lt;br /&gt;
|2016-03-25&lt;br /&gt;
|87&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|106|Mother Rose}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17653-fan-mission-mother-rose-by-grayman-20160101/#entry385131/}}&lt;br /&gt;
|2016-01-01&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Ghost&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|105|Behind Closed Doors}}&lt;br /&gt;
|Bikerdude and the Crucible Team&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/}}&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|359&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Crucible of Omens series|Crucible of Omens]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|103|The Rats Triumphant}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17512-fan-mission-the-rats-triumphant-by-melan-20151031/}}&lt;br /&gt;
|2015-10-31&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]] (Winner)&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|104|Dead Drunk}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17511-fan-mission-dead-drunk-by-stumpy-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|97|Thief&#039;s Remorse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17509-fan-mission-thiefs-remorse-by-airship-ballet-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|42&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|102|Spring Cleaning}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17510-fan-mission-spring-cleaning-by-goldwell-20151030/}} [https://www.youtube.com/watch?v=JzPpmDK9Fxw Briefing] &lt;br /&gt;
|2015-10-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|96|The Golden Skull}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17497-fan-mission-the-golden-skull-by-sotha-20151024/}}&lt;br /&gt;
|2015-10-25&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|101|A House of Locked Secrets}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17163-fan-mission-a-house-of-locked-secrets-by-gelo-moonbo-fleisher-20150528/}} [https://www.youtube.com/watch?v=f5NuTJEZ8VE Trailer]&lt;br /&gt;
|2015-05-29&lt;br /&gt;
|195&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|Horror themes &amp;lt;br&amp;gt; Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|100|Ulysses 2: Protecting the Flock}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17162-fan-mission-ulysses-2-protecting-the-flock-by-sotha-20150528/}}&lt;br /&gt;
|2015-05-28&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|99|Sir Talbot&#039;s Collateral}}&lt;br /&gt;
|Baal and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17093-fan-mission-sir-talbots-collateral-by-baal-bikerdude-15042015/}} [https://www.youtube.com/watch?v=e3rdZfq4Omc Trailer]&lt;br /&gt;
|2015-04-15&lt;br /&gt;
|60&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|98|Vengeance for a Thief Part 3}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16953-the-complete-vengeance-for-a-thief-campaign/}}&lt;br /&gt;
|2015-02-16&lt;br /&gt;
|25&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|95|Lord Edgar&#039;s Bathhouse}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16828-fan-mission-lord-edgars-bathhouse-by-goldwell-27122014/}} [https://www.youtube.com/watch?v=vYSZY7VzFEo Briefing]&lt;br /&gt;
|2014-12-27&lt;br /&gt;
|71&lt;br /&gt;
|No&lt;br /&gt;
|Lord Edgar&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|94|Quinn Co.}}&amp;lt;br&amp;gt;(Made into a campaign, 2015/02/04)&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16912-fan-mission-chase-mercantile-by-airship-ballet-20150204/}}&lt;br /&gt;
|2014-11-22&lt;br /&gt;
|111&lt;br /&gt;
|No&lt;br /&gt;
|Quinn Co.&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|93|Exhumed}}&lt;br /&gt;
|Airship Ballet and Kyyrma&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16658-fan-mission-exhumed-by-kyyrma-and-airship-ballet-20141104/}}&lt;br /&gt;
|2014-11-04&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|92|Briarwood Cathedral}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www64.zippyshare.com/v/25705489/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16644-briarwood-cathedral/}}&lt;br /&gt;
|2014-10-29&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|91|One Step Too Far}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Mirrorlink|https://www.dropbox.com/s/sfxcap1gfdzf318/onesteptoofar.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16457-fan-mission-one-step-too-far-by-dragofer-20140804/}}&lt;br /&gt;
|2014-08-04&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|90|Lockner Manor}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www76.zippyshare.com/v/44108372/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16452-new-mission-lockner-manor/}}&lt;br /&gt;
|2014-08-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|89|Ulysses: Genesis}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|http://www4.zippyshare.com/v/67195436/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16428-fan-mission-ulysses-genesis-by-sotha-20140724/}}&lt;br /&gt;
|2014-07-24&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Horror theme?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|88|Penny Dreadful 2: All the way up}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://mega.co.nz/#!EwoXHZYZ!tE_sKon2h4AWtWPNt9QS3FQClwmXdimhfjIMPcpCQ34}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16387-fan-mission-penny-dreadful-2-by-melan-and-bikerdude-2014078/}} [https://www.youtube.com/watch?v=WmPfCfbeWvg Trailer]&lt;br /&gt;
|2014-07-08&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|87|Poets and Peasants}}&lt;br /&gt;
|Digi&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B1HHvWAgbWGfTkI0SXFubXZucXM}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16373-fan-mission-poets-peasants-by-digi-62914}}&lt;br /&gt;
|2014-06-29&lt;br /&gt;
|1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|85|A Reputation to Uphold}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Mirrorlink|http://www.mindplaces.com/follow.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16204-fan-mission-a-reputation-to-uphold-by-springheel/}}&lt;br /&gt;
|2014-04-18&lt;br /&gt;
|25.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|86|Breaking Out the Fence}}&lt;br /&gt;
|Kyyrma&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/breakingout.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16091-fan-mission-breaking-out-the-fence-17032014-by-kyyrma/}}&lt;br /&gt;
|2014-03-17&lt;br /&gt;
|11.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|83|Inn Business}}&amp;lt;br&amp;gt;(v.1.48, 2014/03/08)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTYWVaODRiSExGeGc}} {{Forumlink|1=http://forums.thedarkmod.com/topic/16018-fan-mission-inn-business-by-rjferret-20140303/}}&lt;br /&gt;
|2014-03-03&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Inn/Tavern &amp;lt;br&amp;gt; City Streets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|82|William Steele 3: Cleighmoor}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16011-fan-mission-cleighmoor-by-grayman-201431/#entry338349/}}&lt;br /&gt;
|2014-03-01&lt;br /&gt;
|38&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Sewers &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|81|William Steele 2: Home Again}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/15919-fan-mission-home-again-by-grayman-2014212/page__fromsearch__1}}&lt;br /&gt;
|2014-02-12&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|80|The Gatehouse}}&lt;br /&gt;
|Bikerdude Goldchocobo&lt;br /&gt;
|{{Mirrorlink|http://www.southquarter.com/tdm/fms/gatehouse.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15844-fan-mission-the-gatehouse-by-bikerdude-goldchocobo-20140114/}} [https://www.youtube.com/watch?v=kcIe2Ucojqw Briefing]&lt;br /&gt;
|2014-01-29&lt;br /&gt;
|100&lt;br /&gt;
|No&lt;br /&gt;
|Remake of Evilartist&#039;s Doom 3 mod&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|79|Window of Opportunity}}&amp;lt;br&amp;gt;(v.1.43, 2014/01/01)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTWTMzQXZtMVFBSG8}} {{Forumlink|1=http://forums.thedarkmod.com/topic/15727-fan-mission-window-of-opportunity-by-rjferret-20140101/}}&lt;br /&gt;
|2014-01-01&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|Spiders (not in short mode)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|78|In A Time Of Need}}&lt;br /&gt;
|kyyrma&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/a97or40t1xrybh3/timeofneed_v1.zip}} {{Forumlink|http://forums.thedarkmod.com/topic/15354-fan-mission-in-a-time-of-need-by-kyyrma-20131112/}}&lt;br /&gt;
|2013-11-12&lt;br /&gt;
|5.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|76|Requiem}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/l6o3vvj9y78hu89/requiem.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15101-fan-mission-requiem-by-gelo-moonbo-fleisher-2013106/}}&lt;br /&gt;
|2013-10-08&lt;br /&gt;
|107.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Lost Civilizations &amp;lt;br&amp;gt; Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|75|Vengeance for a Thief Part 2}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/vfat2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15051-fan-mission-vengeance-for-a-thief-part-2-by-sir-taffsalot-06092013/}}&lt;br /&gt;
|2013-09-06&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Museum Heists&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|74|Lords and Legacy}}&lt;br /&gt;
|Kvorning&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lordsnlegacy.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15016-fan-mission-lords-legacy-by-kvorning-20130830/}}&lt;br /&gt;
|2013-08-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|72|Not An Ordinary Guest}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/naog.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14965-fan-mission-not-an-ordinary-guest-by-fieldmedic-20130801/}}&lt;br /&gt;
|2013-08-01&lt;br /&gt;
|79.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|71|Penny Dreadful: Grail of Regrets}}&lt;br /&gt;
|Melan&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14952-fan-mission-penny-dreadful-by-melan-20130728/}}&lt;br /&gt;
|2013-07-27&lt;br /&gt;
|74&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Horror &lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|70|Solar Escape 1}}&lt;br /&gt;
|Tr00pertj&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14944-fan-mission-solar-escape-1/}}&lt;br /&gt;
|2013-07-22&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|69|The Lich Queen&#039;s Demise}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lich_queens_demise.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14826-fan-mission-the-lich-queens-demise-by-sotha-20130520/unread/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|97.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]] (Winner)&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|77|Old Habits Rebuild}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download/u2gwucibh17c45a/oldhabits.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14827-fan-mission-old-habits-rebuild-by-obsttorte-20052013/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|28.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|68|The Builder&#039;s Blocks}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/builders_blocks.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14592-unusual-gameplay-contest-fm-the-builders-blocks-by-jesps/}}&lt;br /&gt;
|2013-03-18&lt;br /&gt;
|2.85&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|67|Crystal Grave}} &amp;lt;br&amp;gt;(v.2.0, 2013/02/09)&lt;br /&gt;
|ERH+ Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://dl.dropbox.com/u/17706561/crystalgravev2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14510-fan-mission-crystal-grave-v2-by-erh-and-bikerdude-20130209/unread/}}&lt;br /&gt;
|2011-11-15&lt;br /&gt;
|12.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|66|The Builder Roads}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/14449-fan-mission-the-builder-roads-by-obsttorte-20130119/}}&lt;br /&gt;
|2013-01-19&lt;br /&gt;
|?&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|65|William Steele 1: In the North}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|ws1_north.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14214-fan-mission-in-the-north-by-grayman-20121020/}}&lt;br /&gt;
|2012-10-20&lt;br /&gt;
|39.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|64|Old Habits}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download.php?andes2xnsonssfj}} {{Forumlink|http://forums.thedarkmod.com/topic/14206-fan-mission-old-habits-by-obsttorte-20121019/}}&lt;br /&gt;
|2012-10-19&lt;br /&gt;
|12.8&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|63|Deceptive Shadows}}&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|DeceptiveShadows.pk4}} {{Mirrorlink|http://www.sendspace.com/file/jzr9s7}} {{Forumlink|http://forums.thedarkmod.com/topic/14103-fan-mission-deceptive-shadows-by-shadowhide-16sep12/}}&lt;br /&gt;
|2012-09-16&lt;br /&gt;
|22.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|62|Vengeance for a Thief: Part 1}}&lt;br /&gt;
|Sir Taffsalot &lt;br /&gt;
|{{Bloodgate|VFAT1.pk4}} {{Mirrorlink|https://dl.dropbox.com/u/17706561/VFAT1.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14068-fan-mission-vengeance-for-a-thief-part-1-by-sir-taffsalot-06092012/}}&lt;br /&gt;
|2012-09-06&lt;br /&gt;
|20.9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|61|The Phrase Book}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|phrase_book.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/phrase_book.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13799-fan-mission-the-phrase-book-by-sotha-20120512/}}&lt;br /&gt;
|2012-05-11&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|60|In Remembrance of Him}}&lt;br /&gt;
|RPGista&lt;br /&gt;
|{{Bloodgate|remembrance.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/remembrance.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13749-fan-mission-in-remembrance-of-him-by-rpgista/}}&lt;br /&gt;
|2012-04-22&lt;br /&gt;
|27.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|59|Rightful Property}}&lt;br /&gt;
|jysk&lt;br /&gt;
|{{Bloodgate|rightful.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/rightful1.1b.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13711-fan-mission-rightful-property-by-jysk-20120413/}}&lt;br /&gt;
|2012-04-12&lt;br /&gt;
|22.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|58|Sneak and Destroy}}&lt;br /&gt;
|SeriousToni&lt;br /&gt;
|{{Bloodgate|kneipe24.pk4}} {{Mirrorlink|http://minus.com/mVcf61n3G/1f}} {{Forumlink|http://forums.thedarkmod.com/topic/13706-fan-mission-sneak-destroy-by-serioustoni-beginners-contest-2012/}}&lt;br /&gt;
|2012-04-11&lt;br /&gt;
|158&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|56|House of Theo}}&lt;br /&gt;
|Theothesnopp&lt;br /&gt;
|{{Bloodgate|houseoftheo.pk4}} {{Mirrorlink|http://www.gamefront.com/files/21053391/houseoftheo__2__2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13242-fan-mission-house-of-theo/}}&lt;br /&gt;
|2011-12-04&lt;br /&gt;
|6.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|53|Dragon&#039;s Claw}}&lt;br /&gt;
|Bikerdude, Flanders (map assets)&lt;br /&gt;
|{{Bloodgate|claw.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20948800/claw.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13181-fan-missiondragons-claw-by-b1k3rdude-31102011/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|52|A Night to Remember}}&amp;lt;br&amp;gt;(v2.0, 2018/05/28)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|antr.pk4}} New &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/19452-a-night-to-remember/}} &amp;lt;br&amp;gt;Old &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/13177-fan-mission-a-night-to-remember-by-fieldmedic-20111030/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|33&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|51|The Creeps}}&lt;br /&gt;
|Mortem Desino&lt;br /&gt;
|{{Bloodgate|thecreeps.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20939925/thecreeps.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13176-fan-mission-creeps-the-20111030-by-mortem-desino/}}&lt;br /&gt;
|2011-10-30&lt;br /&gt;
|61&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|50|House in Blackbog Hollow}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Bloodgate|blackbog.pk4}}{{Mirrorlink|http://www.bookofages.co.uk/doom3/mods/blackbog.html}} {{Forumlink|http://forums.thedarkmod.com/topic/13172-fan-mission-house-in-blackbog-hollow-by-stumpy-20111028/}}&lt;br /&gt;
|2011-10-28&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|49|Let Sleeping Thieves Lie}}&lt;br /&gt;
|Sir Taffsalot, Bikerdude&lt;br /&gt;
|{{Bloodgate|lstl.pk4}}{{Mirrorlink|http://www.mediafire.com/?zkd1jn4lpwgioh9}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13153-let-sleeping-thieves-lie-by-sir-taffsalot-bikerdude-20102011/}}&lt;br /&gt;
|2011-10-20&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|48|Samhain Night}}&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Bloodgate|samhain.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/samhain.zip}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13127-fan-mission-samhain-night-on-bone-hill-by-pranqster-20111009/}}&lt;br /&gt;
|2011-10-09&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|47|A Score to Settle}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Bloodgate|score_to_settle.pk4}}{{Mirrorlink|http://www.mediafire.com/?f3o7hm4h4ew7o3l}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12894-fan-mission-%2348-a-score-to-settle-by-springheel-20110701/}}&lt;br /&gt;
|2011-07-01&lt;br /&gt;
|135&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|46|Siege Shop}}&amp;lt;br&amp;gt;(v3.0 2013/10/10)&lt;br /&gt;
|PranQster and Lowenz&lt;br /&gt;
|{{Bloodgate|siegeshop.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/siegeshop.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12874-fan-mission-the-siege-shop-by-pranqster-20110626/}}&lt;br /&gt;
|2011-06-26&lt;br /&gt;
|20.51&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|44|Alberic&#039;s Curse}}&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|alberic.pk4}} {{Mirrorlink|http://www.gamefront.com/files/20459738/alberic.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12850-fan-mission-alberics-curse-by-b1k3rdude-20062011/}}&lt;br /&gt;
|2011-06-20&lt;br /&gt;
|29&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] (Winner) &amp;lt;br&amp;gt; T2 FM homage&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|45|Reap As You Sow}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|reap.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12849-fan-mission-reap-as-you-sow-by-fieldmedic-20110619/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|52&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Daylight &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|43|Rake Off}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|rake_off.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12846-fm-rake-off-19-06-2011/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] &lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|42|Winter Harvest}}&amp;lt;br&amp;gt;(v2.0 2011/07/24 with Bikerdude)&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|winterharvest.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12690-seasons-contest-entry-winter-harvest-by-shadowhide/}}&lt;br /&gt;
|2011-05-08&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|41|Fiasco at Fauchard Street}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Bloodgate|fauchard.pk4}} {{Mirrorlink|https://rapidshare.com/files/460141132/fauchard.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12655-fan-mission-fiasco-at-fauchard-street-by-melan-20110501//}}&lt;br /&gt;
|2011-05-01&lt;br /&gt;
|62&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|40|Mandrasola}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|mandrasola.pk4}} {{Mirrorlink|http://www.mediafire.com/?2ox2nbhh796ne71}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12575-fan-mission-mandrasola-by-sotha-20110410/}}&lt;br /&gt;
|2011-04-10&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.southquarter.com/tdm/fms/yantdm1.1.pk4 Q4 Conversion: Yan&#039;s Test]&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12506-fan-mission-q4-map-conversion-yantdm1-280311/}}&lt;br /&gt;
|2011-03-28&lt;br /&gt;
|28&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|38|The Transaction}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|transaction.pk4}} {{Mirrorlink|http://www.mediafire.com/?ux7mx79wumnvcb6}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12408-fan-mission-the-transaction-by-sotha-20110304/}}&lt;br /&gt;
|2011-03-04&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|13|Return to the City}}&amp;lt;br&amp;gt;(v3.0 2015/01/03)&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Bloodgate|ReturnToTheCityV2.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10509-fan-mission-return-to-the-city-by-melan-20100110/}} {{Forumlink|1=http://www.ttlg.com/forums/showthread.php?t=130519/}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12390-fan-mission-return-to-the-city-v2-01032011/}}&lt;br /&gt;
|2010-01-10&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] (Winner) &lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|39|Lockdown}}&lt;br /&gt;
|GameDevGoro Bikerdude Fidcal&lt;br /&gt;
|{{Bloodgate|lockdown1_2_1.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/lockdown1_2_1.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12064-fm-lockdown-part-1-by-gamedevgoro-and-bikerdude-20101224/}}&lt;br /&gt;
|2010-12-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Lockdown 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|37|Flakebridge Monastery}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|flakebridge.pk4}} {{Mirrorlink|http://www.file-upload.net/download-3024426/flakebridge.pk4.html}} {{Mirrorlink|http://rapidshare.com/files/434997519/flakebridge.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11991-fm-flakebridge-monastery-by-jesps/}}&lt;br /&gt;
|2010-12-05&lt;br /&gt;
|16&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|36|Knighton Manor, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|knighton_manor.pk4}} {{Mirrorlink|http://www.mediafire.com/?xrdts3j4t2qxre2}}  {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11898-fan-mission-the-knighton-manor-by-sotha-20101109/page__view__getnewpost}}&lt;br /&gt;
|2010-11-09&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|35|St Albans Cathedral}}&amp;lt;br&amp;gt;(v2.0 2014/06/11)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|stac160.pk4}} [[http://www.bloodgate.com/fms/stac142.pk4 Classic]] {{Mirrorlink|http://www.filefront.com/17464439/stac141.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16343-fan-mission-st-albans-cathedral-v20-11062014/}} {{Loot|FM:TDM_St_Alban&#039;s_Cathedral_-_Bikerdude}}&lt;br /&gt;
|2010-11-01&lt;br /&gt;
|67&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|33|Swing}}&lt;br /&gt;
|Komag&lt;br /&gt;
|{{Bloodgate|swing_v1.2.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11660-vertigo-contest-entry-swing-by-komag-20100825/}} {{Loot|FM:TDM_Swing_-_Komag}}&lt;br /&gt;
|2010-08-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Platforming/Jumping &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|32|The Caduceus of St. Alban}}&amp;lt;br&amp;gt;(v.1.5.5 2010/08/26)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{bloodgate|stalban.pk4}} {{Mirrorlink|http://www.filefront.com/17237609/stalban.pk4/}}{{Forumlink|http://forums.thedarkmod.com/topic/11644-the-caduceus-of-st-alban-vertical-fm-contest-entry-aug-8th-2010/}}&lt;br /&gt;
|2010-08-23&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|30|Somewhere Above the City}}&amp;lt;br&amp;gt;(v1.1 2010/08/27)&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|somewhere1.1.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11619-vertical-contest-mission-somewhere-above-the-city-by-grayman-aug-20-2010/}} {{Loot|FM:TDM_Somewhere_Above_the_City_-_grayman}}&lt;br /&gt;
|2010-08-20&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|29|Betrayal}}&amp;lt;br&amp;gt;(v.1.1, 2010/09/01)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|betrayal.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11605-betrayal-by-fieldmedic-20100817-summer-fm-vertical-contest-entry/}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-08-17&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|31|Rift, The}}&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Bloodgate|rift.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11599-vert-contest-mission-the-rift-by-baddcog-aug-15-2010/}}&lt;br /&gt;
|2010-08-15&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|34|Illusionist&#039;s Tower}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Bloodgate|holetower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11541-illusionists-tower-by-stumpy-201085-summer-fm-vertical-contest-entry}} {{Forumlink|1=http://www.bookofages.co.uk/doom3/mods/holetower.html}} {{Loot|FM:TDM_Illusionist%27s_Tower_-_stumpy}}&lt;br /&gt;
|2010-08-05&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|28|Mad&#039;s Mountain}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|madmountain.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11510-fan-mission-mads-mountain-by-jesps-20100731}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-07-31&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|27|Glenham Tower, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|glenham_tower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11423-fan-mission-the-glenham-tower-by-sotha-20100717}}&lt;br /&gt;
|2010-07-17&lt;br /&gt;
|5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]] (Winner)&lt;br /&gt;
|Castle/Fortress &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|25|Pandora&#039;s Box}}&lt;br /&gt;
|Jesps, Fidcal&lt;br /&gt;
|{{Bloodgate|pandoras_box.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11381-fan-mission-pandoras-box-by-jesps20100711}} {{Loot|FM:TDM_Pandora%27s_Box_-_Jesps}}&lt;br /&gt;
|2010-07-11&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|23|Beleaguered Fence, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|beleaguered_fence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11298-fan-mission-the-beleaguered-fence-by-sotha-20100623}} {{Loot|FM:TDM_The_Beleaguered_Fence_-_Sotha}}&lt;br /&gt;
|2010-06-23&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|22|Special Delivery, A}}&lt;br /&gt;
|Silencium18&lt;br /&gt;
|{{Bloodgate|delivery.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11247-fan-mission-a-special-delivery-by-silencium1820100612}} {{Loot|FM:TDM_A_Special_Delivery_-_Silencium18}}&lt;br /&gt;
|2010-06-12&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|21|Alchemist, The}}&amp;lt;br&amp;gt;(2010/06/04)&lt;br /&gt;
|Sotha, Fidcal&lt;br /&gt;
|{{Bloodgate|alchemist.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11170-fan-mission-the-alchemist-by-sotha-fidcal20100601}} {{Loot|FM:TDM_The_Alchemist_-_Sotha_%26_Fidcal}}&lt;br /&gt;
|2010-06-01&lt;br /&gt;
|27&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|20|Awaiting The Storm}}&lt;br /&gt;
|HappyCheeze&lt;br /&gt;
|{{Bloodgate|storm.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11095-fm-awaiting-the-storm-by-happycheeze-20200522}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-05-22&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|19|Sound Alert &amp;amp; Blackjack Trainer}}&lt;br /&gt;
|Dark Mod Team&lt;br /&gt;
| &lt;br /&gt;
|2010-05-14&lt;br /&gt;
|0.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Training &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|18|No Honor Among Thieves}}&amp;lt;br&amp;gt;(v.3.0, 2015/05/30)&lt;br /&gt;
|Goldchocobo, RailGun, Mortem Desino, Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://tinyurl.com/2a9mdcs}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10993-fan-mission-no-honor-among-thieves-20100429}} {{Loot|FM:TDM_No_Honor_Among_Thieves_-_Goldchocobo}}&lt;br /&gt;
|2010-04-29&lt;br /&gt;
|203&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Church/Cathedral; City Missions; Outdoor/Pagan, Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|17|Heart of Lone Salvation, The}}&amp;lt;br&amp;gt;(v.2.0, 2014/04/12)&lt;br /&gt;
|Fidcal, Baddcog, Bikerdude&lt;br /&gt;
|{{Bloodgate|heart.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/10878-fan-mission-the-heart-of-lone-salvation-by-fidcal-baddcog-bikerdude-20100402/?p=213506}} {{Walkthrough|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}} {{loot|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}}&lt;br /&gt;
|2010-04-02&lt;br /&gt;
|41&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|73|Lord Dufford&#039;s}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10868-fan-mission-lord-duffords-20100331}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-03-31&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|16|Builder&#039;s Influence, The}}&amp;lt;br&amp;gt;(2010/03/23)&lt;br /&gt;
|Railgun, Springheel&lt;br /&gt;
|{{Bloodgate|builders_influence.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/builders_influence.pk4}}{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10811-fan-mission-the-builders-influence-20100320/}} {{Loot|FM:TDM_The_Builders_Influence_-_Railgun%26Springheel}}&lt;br /&gt;
|2010-03-20&lt;br /&gt;
|15&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|14|Business as Usual}}&amp;lt;br&amp;gt;(v2.0 2011/09/24)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|business.pk4}}{{Mirrorlink|1=http://rapidshare.com/files/335299431/business.pk4.html}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10533-fan-mission-business-as-usual-by-b1k3rdude-14012010-christmas-fm-contest-entry/page__view__findpost__p__207055}}&lt;br /&gt;
|2010-01-14&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|12|Sons of Baltona 1, The}}&lt;br /&gt;
|Carnage&lt;br /&gt;
|{{Bloodgate|sons_of_baltona_1.pk4}} {{Mirrorlink|1=http://www.mediafire.com/?m4ywobjodm0}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10498-fan-mission-the-sons-of-baltona-1-by-carnage-20100109}}&lt;br /&gt;
|2010-01-09&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] / Baltona 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|11|Living Expenses}}&lt;br /&gt;
|Sonosuke&lt;br /&gt;
|{{Bloodgate|living_expenses.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10451-fm-living-expenses-by-sonosuke-2-jan-10/page__view__findpost__p__205386}}&lt;br /&gt;
|2010-01-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|10|Trapped!}}&lt;br /&gt;
|RailGun&lt;br /&gt;
|{{Bloodgate|trapped.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10442-fm-trapped-by-railgun-dec-30/page__view__findpost__p__205092}}&lt;br /&gt;
|2009-12-30&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|8|Parcel, The}}&lt;br /&gt;
|Xonze&lt;br /&gt;
|{{Bloodgate|parcel.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10404-fm-the-parcel-by-xonze-dec-24/page__view__findpost__p__204459}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|9|Too Late}}&lt;br /&gt;
|Nielsen74&lt;br /&gt;
|{{Bloodgate|too_late.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10400-fm-too-late-by-nielsen74-24-dec-09/page__view__findpost__p__204396}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|7|Thieves}}&lt;br /&gt;
|Silencium, RailGun, Fidcal&lt;br /&gt;
|{{Bloodgate|thieves.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10286-fm-the-thieves-nov-2509/}}&lt;br /&gt;
|2009-11-26&lt;br /&gt;
|9&lt;br /&gt;
|No &amp;lt;br&amp;gt; [https://www.moddb.com/mods/the-dark-mod/addons/unofficial-thieves-efx  Unofficial EFX Build]&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|6|Patently Dangerous}}&amp;lt;br&amp;gt;(v.2.0, 2013/10/08)&lt;br /&gt;
|demagogue&lt;br /&gt;
|{{Bloodgate|patently_dangerous.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10125-fm-patently-dangerous-oct3109/page__view__findpost__p__199324/}}&lt;br /&gt;
|2009-10-31&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|5|Dark Mod Training Mission, The}}&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|training_mission.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9932-fm-training-mission-17-oct-09/}}&lt;br /&gt;
|2009-10-17&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Training &amp;lt;br&amp;gt; Platforming/Jumping&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|2|Crown of Penitence, The}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|crow_of_penitence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9934-fm-crown-of-penitence-by-jesps-17-oct-09/}}&lt;br /&gt;
|2009-10-16&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|3|Chalice of Kings, The}}&amp;lt;br&amp;gt;(v.2.0, 2015/09/24) (Bikerdude and Xarg)&lt;br /&gt;
|Fidcal&lt;br /&gt;
|{{Bloodgate|chalice.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9935-fm-chalice-of-kings-by-fidcal-17-oct-09/}} {{Loot|FM:TDM_Chalice_of_Kings_-_Fidcal}}&lt;br /&gt;
|2009-10-15&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|1|Outpost, The}}&lt;br /&gt;
|angua, greebo&lt;br /&gt;
|{{Bloodgate|outpost.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9937-fm-the-outpost-by-angua-greebo-17-oct-09/}}&lt;br /&gt;
|2008-12-23&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|15|Mission 2: Tears of Saint Lucia, The}}&amp;lt;br&amp;gt;(v.3.0, 2017/02/14)&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|saintlucia.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10579-fan-mission-the-tears-of-st-lucia-20081021/page__view__findpost__p__207972}} {{Loot|FM:TDM_The_Tears_of_Saint_Lucia_-_jdude}} [https://www.youtube.com/watch?v=yrGxoi3LSGg Briefing]&lt;br /&gt;
|2008-10-21&lt;br /&gt;
|20.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|57|Closemouthed Shadows}}&amp;lt;br&amp;gt;(v.2.0, 2012/01/15)&lt;br /&gt;
|LordSavage, Bikerdude&lt;br /&gt;
|{{Bloodgate|closemouthed_shadows.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/13383-fan-mission-closemouthed-shadows-2008-reworked-for-tdm-107-20120115/}} &lt;br /&gt;
|2008-09-21&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|Closemouthed Shadows 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|24|Thief&#039;s Den}}&amp;lt;br&amp;gt;(v.2.0, 2010/07/04)&lt;br /&gt;
|Fidcal, greebo&lt;br /&gt;
|{{Bloodgate|thiefs_den.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11347-fan-mission-thiefs-den-re-release-by-fidcal20100704}} {{Walkthrough|FM:TDM_Thief&#039;s_Den_-_Fidcal}} {{Loot|FM:TDM_Thief%27s_Den_-_Fidcal}}&lt;br /&gt;
|2008-01-18&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To see a speculative list of Upcoming Fan Missions, please visit: [[Upcoming Fan Missions]]&lt;br /&gt;
&lt;br /&gt;
== Table notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links Key&#039;&#039;&#039;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|[http://wik.thedarkmod.com/images/b/be/Icon_forum.png http://wiki.thedarkmod.com/images/b/be/Icon_forum.png]&lt;br /&gt;
|Link to discussion in Forums&lt;br /&gt;
|-&lt;br /&gt;
|{{Mirrorlink|}}&lt;br /&gt;
|Misc. download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Bloodgate|}}&lt;br /&gt;
|Bloodgate download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Loot|}}&lt;br /&gt;
|Loot list&lt;br /&gt;
|-&lt;br /&gt;
|{{Walkthrough|}}&lt;br /&gt;
|Walkthrough&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mission Type Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bear in mind that individual FMs can have combinations of two or three of these overarching genres/themes, rather than just a single one.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Bank Jobs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside a local banking institution. Will often contain the outsmarting of security systems, gaining access to a safe and cracking its code.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Castle/Fortress&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside or outside a castle or fortress, either one that serves as a military garrison, or as someone&#039;s private residence. Frequently involves background characters from the nobility. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;City Missions&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission that is set mainly in the streets and public spaces of an urban area, such as a town or city. Though the player is most often out on the streets, these missions tend to also involve some degree of exploration and infiltration into private and public buildings alike.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Church/Cathedral&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in and around religious buildings and institutions, such as churches, monasteries, cathedrals, church bureaus, church workshops, etc. Frequently involves [[Clergy/Builder_Characters|ecclesiastical characters]] from the TDM setting&#039;s [[Builders|Builder Church]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Experimental&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves some creative design or gameplay element that isn&#039;t typical for the vast majority of TDM missions. FMs set in highly unusual environments, or with a puzzle-like nature, can fit under this label.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Inn/Tavern&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set mostly in and around an inn, tavern or shanty. Usually focused on robbing some rich guest, acquiring an item stored by the guest at the inn, or gathering intel at the inn.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Jail/Prison&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving an escape from a prison (by the imprisoned player character), infiltration of a prison to gather intel from inmates or help an inmate escape the prison, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Lost Civilizations&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focused on the exploration of ancient ruins, whether above ground or in deep subterranean caverns. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Horror&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission with an overt horror theme. Depending on the author&#039;s approach and intentions, it can focus on psychological horror, or horror based on danger from supernatural threats, or varying combinations of both. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Mansion/Estate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside someone&#039;s private residence (a fancy house, a manor house) and its surrounding grounds. Frequently involves background characters from the nobility or the more affluent townsmen or citizens. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Museum Heists&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on a heist in a museum, art gallery or other institution storing priceless artefacts, artworks, gemstone collections, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Caves&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, but involving the exploration of natural caves and caverns.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Daylight&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly outdoor environment, during the daytime (in contrast to the usual TDM missions, set at night time or early dusk).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Pagan&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, involving some presence of [[Pagans|pagan tribes]] from TDM&#039;s setting. Perhaps even pagan camps and settlements.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Pirate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the presence of characters engaging in piracy or smuggling, and various related piratical themes. Can overlap with the &#039;&#039;Ship&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Platforming/Jumping&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on testing the player&#039;s movement, jumping and climbing skills, with or without equipment. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Sewers&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves the use of the city sewers or others sewers in some way, often as a stealthy means of entry or escape.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Ship&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place aboard a vessel, in port or at sea, or otherwise involves ships to a great degree. Can overlap with the &#039;&#039;Pirate&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Thieves&#039; Highway / Rooftop&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a lot of movement and travel on the rooftops of a town or city (colloquially &amp;quot;The Thieves&#039; Highway&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the exploration of old tombs, catacombs and crypts, often for the purposes of treasure and artefact hunting. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Lost Civilizations&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Training&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission label that is unique to the official Training Mission, an open-ended tutorial mission where players can practice and test their TDM gameplay skills at their own leisure, and to the smaller blackjacking-trainer FM, which focuses on practicing NPC knockouts by the player.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Warehouse&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place in and around a warehouse, usually in some industrial area of a city, or at a port. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contest Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GCC 09: [[Fan_Mission_Contests#2009 Grand Christmas Contest|Grand Christmas Contest 2009]]&lt;br /&gt;
&lt;br /&gt;
SVC 10: [[Fan_Mission_Contests#2010 Summer Vertical Contest|Summer Vertical Contest 2010]]&lt;br /&gt;
&lt;br /&gt;
CSC 11: [[Fan_Mission_Contests#2011 Community Seasons Contest|Community Seasons Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
HSC 11: [[Fan_Mission_Contests#2011 Halloween Speed-build Contest|Halloween Speed-Build Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
CBC 12: [[Fan_Mission_Contests#2012 Community Beginner Contest|Community Beginner Contest 2012]]&lt;br /&gt;
&lt;br /&gt;
CUC 13: [[Fan_Mission_Contests#2013 Community Unusual Contest|Community Unusual Contest 2013]]&lt;br /&gt;
&lt;br /&gt;
HSC 14: [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|Halloween Speed-Build Contest 2014]]&lt;br /&gt;
&lt;br /&gt;
HSC 15: [[Fan_Mission_Contests#2015 Halloween Speed-build Contest|Halloween Speed-Build Contest 2015]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Editing this table ==&lt;br /&gt;
* Please only include playable missions that are fully released, not those currently in development or testing.  Tutorials, demos, prefabs, etc. should be listed elsewhere. &lt;br /&gt;
* A mission title may be listed in plain text as a record of release, or preferably a link to an information page or primary direct download.&lt;br /&gt;
* List by release date descending (newest at the top).&lt;br /&gt;
* If a fan mission only has a single mirror/host please consider adding additional mirrors.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Fan Mission Series]] - An overview of all currently known series or campaigns of fan missions interconnected by their stories or characters. There are already plenty in TDM, and have been since its early days as an expandable game.&lt;br /&gt;
* [[Mission recommendation discussions]] - An overview of past discussions on what FMs the community recommends to players looking for various challenges (difficulty, size, theme, setting, objectives, etc.).&lt;br /&gt;
* [[Fan Mission Contests]] - An overview of past and present contests in Fan Mission creation, by members of the TDM community.&lt;br /&gt;
* [[Upcoming Fan Missions]] - An overview of Fan Missions in development or tentatively planned. (&#039;&#039;Do not&#039;&#039; edit the overview.)&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;br /&gt;
[[Category:Official FMs| ]]&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25501</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25501"/>
		<updated>2019-09-10T17:02:03Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Emitted to what?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky. Unused? draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  if ( shader-&amp;gt;IsPortalSky() ) { // NB TDM portal sky does not use this flag or whatever mechanism&lt;br /&gt;
  		return;    // it used to support. Our portalSky is drawn in this procedure using&lt;br /&gt;
  	}&lt;br /&gt;
  &lt;br /&gt;
  	// the skybox image captured in _currentRender. -- SteveL working on #4182&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Script_objects&amp;diff=25500</id>
		<title>Script objects</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Script_objects&amp;diff=25500"/>
		<updated>2019-09-09T17:04:09Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* tdm_light_holder */ From what I can see, only STIM_TRIGGER is actually processed by tdm_light_holder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;script object&#039;&#039;&#039; is an object that is written in the idTech4 scripting language, and an be attached to arbitrary entities. Each entity can have &#039;&#039;&#039;only one&#039;&#039;&#039; script object, but one script object can be attached to multiple entities.&lt;br /&gt;
&lt;br /&gt;
To use a script object on an entity, give it the spawnarg &#039;&#039;&#039;scriptobject&#039;&#039;&#039; set to the name of the script object. For your convience, TDM already contains a few useful script objects, here is a list:&lt;br /&gt;
&lt;br /&gt;
== List of script objects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== tdm_alarm ===&lt;br /&gt;
&lt;br /&gt;
A script object that sounds an alarm sound that can be heard by AI as suspicious sound, as well as a player audible sound.&lt;br /&gt;
&lt;br /&gt;
Functions:&lt;br /&gt;
&lt;br /&gt;
    void    start_alarm();&lt;br /&gt;
    void    stop_alarm();&lt;br /&gt;
&lt;br /&gt;
See [[atdm:alarm_sound]] on how to use it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== tdm_suicide ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;quot;scriptobject&amp;quot; &amp;quot;tdm_suicide&amp;quot;&lt;br /&gt;
 &amp;quot;remove_delay&amp;quot;  &amp;quot;100&amp;quot;              // remove this entity 100 seconds after spawning it&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: In TDM v1.03 the delay &#039;&#039;&#039;must be&#039;&#039;&#039; &amp;gt;= 1, or the script will wait 360 seconds. In TDM v1.04, the time can also be between 0 and 1 second, for instance 0.5 seconds.&lt;br /&gt;
&lt;br /&gt;
Note #3: From TDM v1.04 onwards, any entity with this script object will activate its targets right before it removes itself. This can be used to trigger things after a certain time from map start has passed, and is used f.i. by the new &amp;quot;atdm:vanishing_platform&amp;quot; entity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== tdm_light_holder ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;quot;scriptobject&amp;quot; &amp;quot;tdm_light_holder&amp;quot;&lt;br /&gt;
 &amp;quot;extinguished&amp;quot;  &amp;quot;1&amp;quot;                // the light starts off, but can be lit by the player&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is typical attached to either lights (an electrical lamp f.i.) or light holders (a candle holder with attached candle + flame, or a torch with attached flame). This script object has handy methods to toggle all lights that this holder has, regardless how many (multiple flames?) or where (flame on holder or flame on candle on holder?).&lt;br /&gt;
&lt;br /&gt;
This script object also makes the entity react to triggers like when you link a button/lever/trigger to this entity.&lt;br /&gt;
&lt;br /&gt;
(See also the light_ext and light_moving_ext scriptobjects, used by extinguishable light sources to respond to fire/water/gas stims.)&lt;br /&gt;
&lt;br /&gt;
=== tdm_gui_message ===&lt;br /&gt;
&lt;br /&gt;
This script object is attached to an &#039;&#039;&#039;atdm:gui_message&#039;&#039;&#039; entity, and the entity shows a message to the player, based on cvars and spawnargs. You can use this script object for the &amp;quot;popup&amp;quot; messages that appear on the upper left corner (f.i. to give the player hints) or for screeen overlays like in a movie, where it says f.i. &amp;quot;Random Town, past midnight&amp;quot;. Where the message appears and how it looks is entirely customizable by using a different gui.&lt;br /&gt;
&lt;br /&gt;
See [[Popup messages]] for more information.&lt;br /&gt;
&lt;br /&gt;
==== CVARs ====&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;tdm_show_trainer_messages&#039;&#039;&#039; - if true, trainer messages are shown, if false, suppressed&lt;br /&gt;
&lt;br /&gt;
==== Spawnargs ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;show&#039;&#039;&#039;- The time in seconds the message is shown, will be longer by approx. one second to fade the message out. If set to 0, shows the message for 6 seconds plus 1s fade out.&lt;br /&gt;
* &#039;&#039;&#039;lines&#039;&#039;&#039; - Number of lines the text has&lt;br /&gt;
* &#039;&#039;&#039;text&#039;&#039;&#039; - The text to be shown on the message.&lt;br /&gt;
* &#039;&#039;&#039;gui&#039;&#039;&#039; - Name of the GUI file, defaults to &#039;&#039;guis/tdm_message.gui&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;wait&#039;&#039;&#039;, &#039;&#039;&#039;delay&#039;&#039;&#039; - These two are inherited from &#039;&#039;&#039;atdm:target_callobjectfunction&#039;&#039;&#039; and set the &amp;quot;wait&amp;quot; between triggers and the initial &amp;quot;delay&amp;quot; before the messsage show.&lt;br /&gt;
* &#039;&#039;&#039;fade_out_time&#039;&#039;&#039; - Defaults to 1, in seconds. This time is waited for the GUI to fade out, then the message is forcefully removed. If you use a different gui with &amp;quot;gui&amp;quot;, then set this spawnarg to match the fadeout time of your gui.&lt;br /&gt;
* &#039;&#039;&#039;auto_trigger&#039;&#039;&#039; - Boolean, if true, the msg is triggered &amp;quot;delay&amp;quot; seconds after map load automatically.&lt;br /&gt;
* &#039;&#039;&#039;force&#039;&#039;&#039; - Boolean, if true, the msg is always shown, regardless of the menu setting (e.g. the CVAR).&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
# Currently messages just overlay each other on the screen. So if a later messages is displayed while an old message is still there, they fade over from the old one to the new one.&lt;br /&gt;
# If the player then steps back into the first trigger, the old message is not displayed again, because it is still waiting around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== tdm_voice ===&lt;br /&gt;
&lt;br /&gt;
A script object for atdm:voice, which can play voices (or any other sounds) so they appear to come from the player. Can be used for voiceovers and narrator effects. These effects use separate volumes defined by two different CVARs. &lt;br /&gt;
&lt;br /&gt;
How to use:&lt;br /&gt;
&lt;br /&gt;
# Place an &#039;&#039;&#039;atdm:voice&#039;&#039;&#039; entity (in &#039;&#039;&#039;Sound&#039;&#039;&#039; folder) in your map (location does not matter, and you need only one)&lt;br /&gt;
# Place multiple &#039;&#039;&#039;atdm:voice_trigger&#039;&#039;&#039; entities (in &#039;&#039;&#039;Targets&#039;&#039;&#039; folder) in your map&lt;br /&gt;
# Link your &#039;&#039;&#039;atdm:voice_trigger&#039;&#039;&#039; entities to your &#039;&#039;&#039;atdm:voice&#039;&#039;&#039; entity ({{key|CTRL}}+{{key|K}} in [[DarkRadiant]])&lt;br /&gt;
&lt;br /&gt;
Give the following spawnargs to the &#039;&#039;&#039;atdm:voice_trigger&#039;&#039;&#039; entities:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;snd_say&amp;quot;    &amp;quot;sound_you_want_to_play&amp;quot;                       // generic, male or female&lt;br /&gt;
&amp;quot;as_player&amp;quot;  &amp;quot;1&amp;quot;                                            // if the player should say things&lt;br /&gt;
&amp;quot;as_player&amp;quot;  &amp;quot;0&amp;quot;                                            // if the narrator should say things&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When &amp;quot;as_player&amp;quot; is set to &amp;quot;1&amp;quot;, the sound volume is controlled by the &amp;quot;Player Voice Volume&amp;quot; slider in the TDM Audio menu.&lt;br /&gt;
&lt;br /&gt;
When &amp;quot;as_player&amp;quot; is set to &amp;quot;0&amp;quot;, the sound volume is controlled by the &amp;quot;Narrator Volume&amp;quot; slider in the TDM Audio menu.&lt;br /&gt;
==== CVARS ====&lt;br /&gt;
&lt;br /&gt;
* tdm_voice_player_volume // Player Voice Volume&lt;br /&gt;
* tdm_voice_from_off_volume // Narrator Volume&lt;br /&gt;
* Menu settings&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Unsupported&#039;&#039;&#039; options (taken out because the team doesn&#039;t want to add them):&lt;br /&gt;
&lt;br /&gt;
* CVAR: tdm_player_is_female&lt;br /&gt;
* Spawnarg: &amp;quot;snd_say_female&amp;quot; &amp;quot;female_sound_you_want_to_play&amp;quot; // overrides snd_say if the player is female&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Writing script objects]]&lt;br /&gt;
&lt;br /&gt;
{{scripting}}&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=25495</id>
		<title>Fan Missions for The Dark Mod</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=25495"/>
		<updated>2019-09-03T18:29:38Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: I don&amp;#039;t remember warehouse.map in mercwarehouse.pk4 as a city mission either.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{infobox|&amp;lt;center&amp;gt;&#039;&#039;&#039;Big Ugly Disclaimer:&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;The Dark Mod&#039;&#039;&#039; team does not necessarily support or endorse content listed here, and only hosts missions listed on the [http://www.thedarkmod.com/ official TDM website]. This is a community maintained list, and an ongoing work in progress.  Most of the mirror links in this list are dead or are for missions that are not 2.0 compliant. Mission entries which are suspected to violate copyright must be text-only, and cannot contain links.  Report and/or remove links found in violation of this rule.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* For details about editing this table, see [[#Editing_this_table|below]].&lt;br /&gt;
* For details about how to install Fan Missions please visit: [[Installing and Running Fan Missions]]&lt;br /&gt;
* To sort by a different criterion, click the [[Image:Sort none.gif]] icon in the relevant column header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;21%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;11%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;4%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|First Release&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|Size (MB)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;3%&amp;quot;|EFX Reverb&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Series&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;13%&amp;quot;|Mission Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;6%&amp;quot;|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT NEW MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|138|Hidden Hands: Vitalic Fever}}&lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/20051-hidden-hands-vitalic-fever-20072019}}&lt;br /&gt;
|2019-07-20&lt;br /&gt;
|269&lt;br /&gt;
|Yes&lt;br /&gt;
|Hidden Hands 2&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spiders, undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|137|Chronicles of Skulduggery 2: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19975-fan-mission-chronicles-of-skulduggery-2-a-precarious-position-20190504/}}&lt;br /&gt;
|2019-05-04&lt;br /&gt;
|14.5&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Chronicles_of_Skulduggery_series|Chronicles of Skulduggery]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|136|William Steele 5: Commerce Bank}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19957-fan-mission-commerce-bank-by-grayman-2019410/}}&lt;br /&gt;
|2019-04-10&lt;br /&gt;
|30&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|135|Marsh of Rahena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19951-fan-mission-marsh-of-rahena-by-erh-201945}}&lt;br /&gt;
|2019-04-05&lt;br /&gt;
|60.3&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress, Horror &lt;br /&gt;
|Undead, Spiders, Horror Themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|134|Shadows of Northdale ACT 2}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19936-fan-mission-shadows-of-northdale-act-ii-by-goldwell-20190320/}} [https://www.youtube.com/watch?v=KO-eIOX9nqI Briefing]&lt;br /&gt;
|2019-03-20&lt;br /&gt;
|417&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|133|Cleaning Up the Neighbourhood}}&lt;br /&gt;
|some1stoleit and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19898-fan-mission-cleaning-up-the-neighbourhood-by-some1stoleitbikerdude-20190219/}}&lt;br /&gt;
|2019-02-18&lt;br /&gt;
|34.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|132|Hidden Hands: Initiation}}&lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19796-hidden-hands-initiation-27122018/}}&lt;br /&gt;
|2018-12-27&lt;br /&gt;
|92.5&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt;Ship&lt;br /&gt;
|Spiders, Extra-natural entities&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|131|The Night of Reluctant Benefaction}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19787-fan-mission-the-night-of-reluctant-benefaction/}}&lt;br /&gt;
|2018-12-24&lt;br /&gt;
|11.9&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|130|Mission of Mercy}}&lt;br /&gt;
|joebarnin&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19642-fan-mission-mission-of-mercy-by-joebarnin-20180914/}}&lt;br /&gt;
|2018-09-14&lt;br /&gt;
|10.1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|129|William Steele 4: The Warrens}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19618-fan-mission-the-warrens-by-grayman-201891/}}&lt;br /&gt;
|2018-09-01&lt;br /&gt;
|53&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|128|Braeden Church}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19533-fan-mission-braeden-church-by-grayman-201871/}}&lt;br /&gt;
|2018-07-01&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|127|Chronicles of Skulduggery: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19439-chronicles-of-skulduggery-pearls-and-swine/}}&lt;br /&gt;
|2018-05-25&lt;br /&gt;
|23&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Chronicles_of_Skulduggery_series|Chronicles of Skulduggery]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|126|Shadows of Northdale ACT I}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19368-fan-mission-shadows-of-northdale-act-i-by-goldwell-20180323/}} [https://www.youtube.com/watch?v=p4nP3lYd6wg Briefing]&lt;br /&gt;
|2018-03-23&lt;br /&gt;
|295&lt;br /&gt;
|Custom &amp;lt;br&amp;gt;(not EFX)&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|125|Sir Taffsalot&#039;s Sword}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19361-fan-mission-sir-taffsalots-sword-by-grayman-2018318/}}&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; In memoriam of Gary (Sir Taffsalot) {{Forumlink|http://forums.thedarkmod.com/topic/19306-sad-news-we-lost-one-of-our-own-sir-taffsalot/}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|124|The Arena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19350-fan-mission-the-arena-by-erh/}}&lt;br /&gt;
|2018-03-12&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Arena Deathmatch &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|123|The Elixir}}&lt;br /&gt;
|Bikerdude and Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19323-fan-mission-the-elixir-by-b1k3rdude-obsttorte-17022018/}} [https://www.youtube.com/watch?v=KfElYZs-FaE Briefing]&lt;br /&gt;
|2018-02-17&lt;br /&gt;
|112&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|122|Volta 2: Cauldron of the Gods}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19207-volta-ii-cauldron-of-the-gods/}} [https://www.youtube.com/watch?v=SRRCRVFHruc Briefing]&lt;br /&gt;
|2017-11-30&lt;br /&gt;
|252&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|121|In the Black}}&lt;br /&gt;
|VanishedOne&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19185-fan-mission-in-the-black/}}&lt;br /&gt;
|2017-11-18&lt;br /&gt;
|103&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|120|Accountant 1: Thieves and Heirs}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19164-fan-mission-the-accountant-1-thieves-and-heirs-by-goldwell-20171108}} [https://www.youtube.com/watch?v=Tk9DtOT4kjc Briefing]&lt;br /&gt;
|2017-11-08&lt;br /&gt;
|247&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|119|King of the Mountain}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19105-fan-mission-king-of-the-mountain-by-spoonman-18092017/}}&lt;br /&gt;
|2017-09-18&lt;br /&gt;
|8.07&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|118|Briarwood Manor}}&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18980-fan-mission-briarwood-manor-by-neonsstyle-first-mission-2017-07-11}} [https://www.youtube.com/watch?v=BZnSuLVatYM Trailer] [https://www.youtube.com/watch?v=CPlu8fEzyGM Briefing]&lt;br /&gt;
|2017-07-11&lt;br /&gt;
|90&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spider&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|117|A Matter of Hours}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18809-fan-mission-a-matter-of-hours-by-springheel-2842017/}}&lt;br /&gt;
|2017-04-28&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan Mission Series#Corbin series|Corbin]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|116|The Ravine}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18782-fan-mission-the-ravine-by-spoonman-17042017/}}&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|30.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|115|The Bakery Job}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18707-fan-mission-the-bakery-job-by-sotha-20170309/}}&lt;br /&gt;
|2017-03-09&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM||Mission 1: A New Job}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18647-tdm-205-official-introductory-missions/}}&lt;br /&gt;
|2017-03-14&lt;br /&gt;
|13.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|114|Coercion}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18405-fan-mission-coercion-by-sotha-20160927}}&lt;br /&gt;
|2016-09-27&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|113|Down by the Riverside}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18402-fan-mission-down-by-the-riverside-by-dragofer-20160925}}&lt;br /&gt;
|2016-09-25&lt;br /&gt;
|56&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Horror themes, Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|112|Penny Dreadful 3: Erasing the Trail}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18200-fan-mission-penny-dreadful-3-by-melan-and-bikerdude-20160710}}&lt;br /&gt;
|2016-07-09&lt;br /&gt;
|200&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|111|Volta 1: Volta and the Stone}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016}}&lt;br /&gt;
|2016-05-27&lt;br /&gt;
|102&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|110|Full Moon Fever}}&amp;lt;br&amp;gt;(v2.0 2018/02/21)&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18066-fan-mission-full-moon-fever-by-spoonman-14052016/}}&lt;br /&gt;
|2016-05-14&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|109|King of Diamonds}}&lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18064-fan-mission-the-king-of-diamonds-by-spooks-20160513}}&lt;br /&gt;
|2016-05-13&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|Occult themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|108|Accountant 2: New in Town}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18054-fan-mission-the-accountant-2-new-in-town-by-goldwell-20160509/}} [https://www.youtube.com/watch?v=xeuIO_GcYjQ Briefing] &amp;lt;br&amp;gt; [https://www.youtube.com/watch?v=w6e_SJ0_JOM Gameplay trailer] &lt;br /&gt;
|2016-05-08&lt;br /&gt;
|358&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|107|The Smiling Cutpurse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17850-fan-mission-the-smiling-cutpurse-by-airship-ballet-20160325/}}&lt;br /&gt;
|2016-03-25&lt;br /&gt;
|87&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|106|Mother Rose}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17653-fan-mission-mother-rose-by-grayman-20160101/#entry385131/}}&lt;br /&gt;
|2016-01-01&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Ghost&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|105|Behind Closed Doors}}&lt;br /&gt;
|Bikerdude and the Crucible Team&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/}}&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|359&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Crucible of Omens series|Crucible of Omens]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|103|The Rats Triumphant}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17512-fan-mission-the-rats-triumphant-by-melan-20151031/}}&lt;br /&gt;
|2015-10-31&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]] (Winner)&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|104|Dead Drunk}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17511-fan-mission-dead-drunk-by-stumpy-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|97|Thief&#039;s Remorse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17509-fan-mission-thiefs-remorse-by-airship-ballet-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|42&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|102|Spring Cleaning}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17510-fan-mission-spring-cleaning-by-goldwell-20151030/}} [https://www.youtube.com/watch?v=JzPpmDK9Fxw Briefing] &lt;br /&gt;
|2015-10-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|96|The Golden Skull}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17497-fan-mission-the-golden-skull-by-sotha-20151024/}}&lt;br /&gt;
|2015-10-25&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|101|A House of Locked Secrets}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17163-fan-mission-a-house-of-locked-secrets-by-gelo-moonbo-fleisher-20150528/}} [https://www.youtube.com/watch?v=f5NuTJEZ8VE Trailer]&lt;br /&gt;
|2015-05-29&lt;br /&gt;
|195&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|Horror themes &amp;lt;br&amp;gt; Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|100|Ulysses 2: Protecting the Flock}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17162-fan-mission-ulysses-2-protecting-the-flock-by-sotha-20150528/}}&lt;br /&gt;
|2015-05-28&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|99|Sir Talbot&#039;s Collateral}}&lt;br /&gt;
|Baal and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17093-fan-mission-sir-talbots-collateral-by-baal-bikerdude-15042015/}} [https://www.youtube.com/watch?v=e3rdZfq4Omc Trailer]&lt;br /&gt;
|2015-04-15&lt;br /&gt;
|60&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|98|Vengeance for a Thief Part 3}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16953-the-complete-vengeance-for-a-thief-campaign/}}&lt;br /&gt;
|2015-02-16&lt;br /&gt;
|25&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|95|Lord Edgar&#039;s Bathhouse}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16828-fan-mission-lord-edgars-bathhouse-by-goldwell-27122014/}} [https://www.youtube.com/watch?v=vYSZY7VzFEo Briefing]&lt;br /&gt;
|2014-12-27&lt;br /&gt;
|71&lt;br /&gt;
|No&lt;br /&gt;
|Lord Edgar&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|94|Quinn Co.}}&amp;lt;br&amp;gt;(Made into a campaign, 2015/02/04)&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16912-fan-mission-chase-mercantile-by-airship-ballet-20150204/}}&lt;br /&gt;
|2014-11-22&lt;br /&gt;
|111&lt;br /&gt;
|No&lt;br /&gt;
|Quinn Co.&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|93|Exhumed}}&lt;br /&gt;
|Airship Ballet and Kyyrma&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16658-fan-mission-exhumed-by-kyyrma-and-airship-ballet-20141104/}}&lt;br /&gt;
|2014-11-04&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|92|Briarwood Cathedral}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www64.zippyshare.com/v/25705489/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16644-briarwood-cathedral/}}&lt;br /&gt;
|2014-10-29&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|91|One Step Too Far}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Mirrorlink|https://www.dropbox.com/s/sfxcap1gfdzf318/onesteptoofar.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16457-fan-mission-one-step-too-far-by-dragofer-20140804/}}&lt;br /&gt;
|2014-08-04&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|90|Lockner Manor}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www76.zippyshare.com/v/44108372/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16452-new-mission-lockner-manor/}}&lt;br /&gt;
|2014-08-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|89|Ulysses: Genesis}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|http://www4.zippyshare.com/v/67195436/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16428-fan-mission-ulysses-genesis-by-sotha-20140724/}}&lt;br /&gt;
|2014-07-24&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Horror theme?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|88|Penny Dreadful 2: All the way up}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://mega.co.nz/#!EwoXHZYZ!tE_sKon2h4AWtWPNt9QS3FQClwmXdimhfjIMPcpCQ34}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16387-fan-mission-penny-dreadful-2-by-melan-and-bikerdude-2014078/}} [https://www.youtube.com/watch?v=WmPfCfbeWvg Trailer]&lt;br /&gt;
|2014-07-08&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|87|Poets and Peasants}}&lt;br /&gt;
|Digi&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B1HHvWAgbWGfTkI0SXFubXZucXM}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16373-fan-mission-poets-peasants-by-digi-62914}}&lt;br /&gt;
|2014-06-29&lt;br /&gt;
|1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|85|A Reputation to Uphold}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Mirrorlink|http://www.mindplaces.com/follow.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16204-fan-mission-a-reputation-to-uphold-by-springheel/}}&lt;br /&gt;
|2014-04-18&lt;br /&gt;
|25.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|86|Breaking Out the Fence}}&lt;br /&gt;
|Kyyrma&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/breakingout.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16091-fan-mission-breaking-out-the-fence-17032014-by-kyyrma/}}&lt;br /&gt;
|2014-03-17&lt;br /&gt;
|11.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|83|Inn Business}}&amp;lt;br&amp;gt;(v.1.48, 2014/03/08)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTYWVaODRiSExGeGc}} {{Forumlink|1=http://forums.thedarkmod.com/topic/16018-fan-mission-inn-business-by-rjferret-20140303/}}&lt;br /&gt;
|2014-03-03&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Inn/Tavern &amp;lt;br&amp;gt; City Streets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|82|William Steele 3: Cleighmoor}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16011-fan-mission-cleighmoor-by-grayman-201431/#entry338349/}}&lt;br /&gt;
|2014-03-01&lt;br /&gt;
|38&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Sewers &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|81|William Steele 2: Home Again}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/15919-fan-mission-home-again-by-grayman-2014212/page__fromsearch__1}}&lt;br /&gt;
|2014-02-12&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|80|The Gatehouse}}&lt;br /&gt;
|Bikerdude Goldchocobo&lt;br /&gt;
|{{Mirrorlink|http://www.southquarter.com/tdm/fms/gatehouse.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15844-fan-mission-the-gatehouse-by-bikerdude-goldchocobo-20140114/}} [https://www.youtube.com/watch?v=kcIe2Ucojqw Briefing]&lt;br /&gt;
|2014-01-29&lt;br /&gt;
|100&lt;br /&gt;
|No&lt;br /&gt;
|Remake of Evilartist&#039;s Doom 3 mod&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|79|Window of Opportunity}}&amp;lt;br&amp;gt;(v.1.43, 2014/01/01)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTWTMzQXZtMVFBSG8}} {{Forumlink|1=http://forums.thedarkmod.com/topic/15727-fan-mission-window-of-opportunity-by-rjferret-20140101/}}&lt;br /&gt;
|2014-01-01&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|Spiders (not in short mode)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|78|In A Time Of Need}}&lt;br /&gt;
|kyyrma&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/a97or40t1xrybh3/timeofneed_v1.zip}} {{Forumlink|http://forums.thedarkmod.com/topic/15354-fan-mission-in-a-time-of-need-by-kyyrma-20131112/}}&lt;br /&gt;
|2013-11-12&lt;br /&gt;
|5.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|76|Requiem}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/l6o3vvj9y78hu89/requiem.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15101-fan-mission-requiem-by-gelo-moonbo-fleisher-2013106/}}&lt;br /&gt;
|2013-10-08&lt;br /&gt;
|107.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Lost Civilizations &amp;lt;br&amp;gt; Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|75|Vengeance for a Thief Part 2}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/vfat2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15051-fan-mission-vengeance-for-a-thief-part-2-by-sir-taffsalot-06092013/}}&lt;br /&gt;
|2013-09-06&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Museum Heists&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|74|Lords and Legacy}}&lt;br /&gt;
|Kvorning&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lordsnlegacy.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15016-fan-mission-lords-legacy-by-kvorning-20130830/}}&lt;br /&gt;
|2013-08-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|72|Not An Ordinary Guest}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/naog.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14965-fan-mission-not-an-ordinary-guest-by-fieldmedic-20130801/}}&lt;br /&gt;
|2013-08-01&lt;br /&gt;
|79.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|71|Penny Dreadful: Grail of Regrets}}&lt;br /&gt;
|Melan&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14952-fan-mission-penny-dreadful-by-melan-20130728/}}&lt;br /&gt;
|2013-07-27&lt;br /&gt;
|74&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Horror &lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|70|Solar Escape 1}}&lt;br /&gt;
|Tr00pertj&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14944-fan-mission-solar-escape-1/}}&lt;br /&gt;
|2013-07-22&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|69|The Lich Queen&#039;s Demise}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lich_queens_demise.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14826-fan-mission-the-lich-queens-demise-by-sotha-20130520/unread/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|97.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]] (Winner)&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|77|Old Habits Rebuild}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download/u2gwucibh17c45a/oldhabits.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14827-fan-mission-old-habits-rebuild-by-obsttorte-20052013/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|28.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|68|The Builder&#039;s Blocks}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/builders_blocks.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14592-unusual-gameplay-contest-fm-the-builders-blocks-by-jesps/}}&lt;br /&gt;
|2013-03-18&lt;br /&gt;
|2.85&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|67|Crystal Grave}} &amp;lt;br&amp;gt;(v.2.0, 2013/02/09)&lt;br /&gt;
|ERH+ Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://dl.dropbox.com/u/17706561/crystalgravev2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14510-fan-mission-crystal-grave-v2-by-erh-and-bikerdude-20130209/unread/}}&lt;br /&gt;
|2011-11-15&lt;br /&gt;
|12.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|66|The Builder Roads}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/14449-fan-mission-the-builder-roads-by-obsttorte-20130119/}}&lt;br /&gt;
|2013-01-19&lt;br /&gt;
|?&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|65|William Steele 1: In the North}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|ws1_north.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14214-fan-mission-in-the-north-by-grayman-20121020/}}&lt;br /&gt;
|2012-10-20&lt;br /&gt;
|39.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|64|Old Habits}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download.php?andes2xnsonssfj}} {{Forumlink|http://forums.thedarkmod.com/topic/14206-fan-mission-old-habits-by-obsttorte-20121019/}}&lt;br /&gt;
|2012-10-19&lt;br /&gt;
|12.8&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|63|Deceptive Shadows}}&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|DeceptiveShadows.pk4}} {{Mirrorlink|http://www.sendspace.com/file/jzr9s7}} {{Forumlink|http://forums.thedarkmod.com/topic/14103-fan-mission-deceptive-shadows-by-shadowhide-16sep12/}}&lt;br /&gt;
|2012-09-16&lt;br /&gt;
|22.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|62|Vengeance for a Thief: Part 1}}&lt;br /&gt;
|Sir Taffsalot &lt;br /&gt;
|{{Bloodgate|VFAT1.pk4}} {{Mirrorlink|https://dl.dropbox.com/u/17706561/VFAT1.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14068-fan-mission-vengeance-for-a-thief-part-1-by-sir-taffsalot-06092012/}}&lt;br /&gt;
|2012-09-06&lt;br /&gt;
|20.9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|61|The Phrase Book}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|phrase_book.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/phrase_book.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13799-fan-mission-the-phrase-book-by-sotha-20120512/}}&lt;br /&gt;
|2012-05-11&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|60|In Remembrance of Him}}&lt;br /&gt;
|RPGista&lt;br /&gt;
|{{Bloodgate|remembrance.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/remembrance.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13749-fan-mission-in-remembrance-of-him-by-rpgista/}}&lt;br /&gt;
|2012-04-22&lt;br /&gt;
|27.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|59|Rightful Property}}&lt;br /&gt;
|jysk&lt;br /&gt;
|{{Bloodgate|rightful.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/rightful1.1b.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13711-fan-mission-rightful-property-by-jysk-20120413/}}&lt;br /&gt;
|2012-04-12&lt;br /&gt;
|22.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|58|Sneak and Destroy}}&lt;br /&gt;
|SeriousToni&lt;br /&gt;
|{{Bloodgate|kneipe24.pk4}} {{Mirrorlink|http://minus.com/mVcf61n3G/1f}} {{Forumlink|http://forums.thedarkmod.com/topic/13706-fan-mission-sneak-destroy-by-serioustoni-beginners-contest-2012/}}&lt;br /&gt;
|2012-04-11&lt;br /&gt;
|158&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|56|House of Theo}}&lt;br /&gt;
|Theothesnopp&lt;br /&gt;
|{{Bloodgate|houseoftheo.pk4}} {{Mirrorlink|http://www.gamefront.com/files/21053391/houseoftheo__2__2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13242-fan-mission-house-of-theo/}}&lt;br /&gt;
|2011-12-04&lt;br /&gt;
|6.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|53|Dragon&#039;s Claw}}&lt;br /&gt;
|Bikerdude, Flanders (map assets)&lt;br /&gt;
|{{Bloodgate|claw.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20948800/claw.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13181-fan-missiondragons-claw-by-b1k3rdude-31102011/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|52|A Night to Remember}}&amp;lt;br&amp;gt;(v2.0, 2018/05/28)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|antr.pk4}} New &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/19452-a-night-to-remember/}} &amp;lt;br&amp;gt;Old &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/13177-fan-mission-a-night-to-remember-by-fieldmedic-20111030/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|33&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|51|The Creeps}}&lt;br /&gt;
|Mortem Desino&lt;br /&gt;
|{{Bloodgate|thecreeps.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20939925/thecreeps.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13176-fan-mission-creeps-the-20111030-by-mortem-desino/}}&lt;br /&gt;
|2011-10-30&lt;br /&gt;
|61&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|50|House in Blackbog Hollow}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Bloodgate|blackbog.pk4}}{{Mirrorlink|http://www.bookofages.co.uk/doom3/mods/blackbog.html}} {{Forumlink|http://forums.thedarkmod.com/topic/13172-fan-mission-house-in-blackbog-hollow-by-stumpy-20111028/}}&lt;br /&gt;
|2011-10-28&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|49|Let Sleeping Thieves Lie}}&lt;br /&gt;
|Sir Taffsalot, Bikerdude&lt;br /&gt;
|{{Bloodgate|lstl.pk4}}{{Mirrorlink|http://www.mediafire.com/?zkd1jn4lpwgioh9}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13153-let-sleeping-thieves-lie-by-sir-taffsalot-bikerdude-20102011/}}&lt;br /&gt;
|2011-10-20&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|48|Samhain Night}}&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Bloodgate|samhain.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/samhain.zip}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13127-fan-mission-samhain-night-on-bone-hill-by-pranqster-20111009/}}&lt;br /&gt;
|2011-10-09&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|47|A Score to Settle}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Bloodgate|score_to_settle.pk4}}{{Mirrorlink|http://www.mediafire.com/?f3o7hm4h4ew7o3l}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12894-fan-mission-%2348-a-score-to-settle-by-springheel-20110701/}}&lt;br /&gt;
|2011-07-01&lt;br /&gt;
|135&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|46|Siege Shop}}&amp;lt;br&amp;gt;(v3.0 2013/10/10)&lt;br /&gt;
|PranQster and Lowenz&lt;br /&gt;
|{{Bloodgate|siegeshop.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/siegeshop.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12874-fan-mission-the-siege-shop-by-pranqster-20110626/}}&lt;br /&gt;
|2011-06-26&lt;br /&gt;
|20.51&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|44|Alberic&#039;s Curse}}&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|alberic.pk4}} {{Mirrorlink|http://www.gamefront.com/files/20459738/alberic.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12850-fan-mission-alberics-curse-by-b1k3rdude-20062011/}}&lt;br /&gt;
|2011-06-20&lt;br /&gt;
|29&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] (Winner) &amp;lt;br&amp;gt; T2 FM homage&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|45|Reap As You Sow}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|reap.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12849-fan-mission-reap-as-you-sow-by-fieldmedic-20110619/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|52&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Daylight &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|43|Rake Off}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|rake_off.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12846-fm-rake-off-19-06-2011/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] &lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|42|Winter Harvest}}&amp;lt;br&amp;gt;(v2.0 2011/07/24 with Bikerdude)&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|winterharvest.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12690-seasons-contest-entry-winter-harvest-by-shadowhide/}}&lt;br /&gt;
|2011-05-08&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|41|Fiasco at Fauchard Street}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Bloodgate|fauchard.pk4}} {{Mirrorlink|https://rapidshare.com/files/460141132/fauchard.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12655-fan-mission-fiasco-at-fauchard-street-by-melan-20110501//}}&lt;br /&gt;
|2011-05-01&lt;br /&gt;
|62&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|40|Mandrasola}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|mandrasola.pk4}} {{Mirrorlink|http://www.mediafire.com/?2ox2nbhh796ne71}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12575-fan-mission-mandrasola-by-sotha-20110410/}}&lt;br /&gt;
|2011-04-10&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.southquarter.com/tdm/fms/yantdm1.1.pk4 Q4 Conversion: Yan&#039;s Test]&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12506-fan-mission-q4-map-conversion-yantdm1-280311/}}&lt;br /&gt;
|2011-03-28&lt;br /&gt;
|28&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|38|The Transaction}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|transaction.pk4}} {{Mirrorlink|http://www.mediafire.com/?ux7mx79wumnvcb6}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12408-fan-mission-the-transaction-by-sotha-20110304/}}&lt;br /&gt;
|2011-03-04&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|13|Return to the City}}&amp;lt;br&amp;gt;(v3.0 2015/01/03)&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Bloodgate|ReturnToTheCityV2.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10509-fan-mission-return-to-the-city-by-melan-20100110/}} {{Forumlink|1=http://www.ttlg.com/forums/showthread.php?t=130519/}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12390-fan-mission-return-to-the-city-v2-01032011/}}&lt;br /&gt;
|2010-01-10&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] (Winner) &lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|39|Lockdown}}&lt;br /&gt;
|GameDevGoro Bikerdude Fidcal&lt;br /&gt;
|{{Bloodgate|lockdown1_2_1.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/lockdown1_2_1.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12064-fm-lockdown-part-1-by-gamedevgoro-and-bikerdude-20101224/}}&lt;br /&gt;
|2010-12-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Lockdown 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|37|Flakebridge Monastery}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|flakebridge.pk4}} {{Mirrorlink|http://www.file-upload.net/download-3024426/flakebridge.pk4.html}} {{Mirrorlink|http://rapidshare.com/files/434997519/flakebridge.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11991-fm-flakebridge-monastery-by-jesps/}}&lt;br /&gt;
|2010-12-05&lt;br /&gt;
|16&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|36|Knighton Manor, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|knighton_manor.pk4}} {{Mirrorlink|http://www.mediafire.com/?xrdts3j4t2qxre2}}  {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11898-fan-mission-the-knighton-manor-by-sotha-20101109/page__view__getnewpost}}&lt;br /&gt;
|2010-11-09&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|35|St Albans Cathedral}}&amp;lt;br&amp;gt;(v2.0 2014/06/11)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|stac160.pk4}} [[http://www.bloodgate.com/fms/stac142.pk4 Classic]] {{Mirrorlink|http://www.filefront.com/17464439/stac141.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16343-fan-mission-st-albans-cathedral-v20-11062014/}} {{Loot|FM:TDM_St_Alban&#039;s_Cathedral_-_Bikerdude}}&lt;br /&gt;
|2010-11-01&lt;br /&gt;
|67&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|33|Swing}}&lt;br /&gt;
|Komag&lt;br /&gt;
|{{Bloodgate|swing_v1.2.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11660-vertigo-contest-entry-swing-by-komag-20100825/}} {{Loot|FM:TDM_Swing_-_Komag}}&lt;br /&gt;
|2010-08-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Platforming/Jumping &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|32|The Caduceus of St. Alban}}&amp;lt;br&amp;gt;(v.1.5.5 2010/08/26)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{bloodgate|stalban.pk4}} {{Mirrorlink|http://www.filefront.com/17237609/stalban.pk4/}}{{Forumlink|http://forums.thedarkmod.com/topic/11644-the-caduceus-of-st-alban-vertical-fm-contest-entry-aug-8th-2010/}}&lt;br /&gt;
|2010-08-23&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|30|Somewhere Above the City}}&amp;lt;br&amp;gt;(v1.1 2010/08/27)&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|somewhere1.1.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11619-vertical-contest-mission-somewhere-above-the-city-by-grayman-aug-20-2010/}} {{Loot|FM:TDM_Somewhere_Above_the_City_-_grayman}}&lt;br /&gt;
|2010-08-20&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|29|Betrayal}}&amp;lt;br&amp;gt;(v.1.1, 2010/09/01)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|betrayal.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11605-betrayal-by-fieldmedic-20100817-summer-fm-vertical-contest-entry/}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-08-17&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|31|Rift, The}}&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Bloodgate|rift.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11599-vert-contest-mission-the-rift-by-baddcog-aug-15-2010/}}&lt;br /&gt;
|2010-08-15&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|34|Illusionist&#039;s Tower}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Bloodgate|holetower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11541-illusionists-tower-by-stumpy-201085-summer-fm-vertical-contest-entry}} {{Forumlink|1=http://www.bookofages.co.uk/doom3/mods/holetower.html}} {{Loot|FM:TDM_Illusionist%27s_Tower_-_stumpy}}&lt;br /&gt;
|2010-08-05&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|28|Mad&#039;s Mountain}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|madmountain.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11510-fan-mission-mads-mountain-by-jesps-20100731}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-07-31&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|27|Glenham Tower, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|glenham_tower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11423-fan-mission-the-glenham-tower-by-sotha-20100717}}&lt;br /&gt;
|2010-07-17&lt;br /&gt;
|5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]] (Winner)&lt;br /&gt;
|Castle/Fortress &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|25|Pandora&#039;s Box}}&lt;br /&gt;
|Jesps, Fidcal&lt;br /&gt;
|{{Bloodgate|pandoras_box.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11381-fan-mission-pandoras-box-by-jesps20100711}} {{Loot|FM:TDM_Pandora%27s_Box_-_Jesps}}&lt;br /&gt;
|2010-07-11&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|23|Beleaguered Fence, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|beleaguered_fence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11298-fan-mission-the-beleaguered-fence-by-sotha-20100623}} {{Loot|FM:TDM_The_Beleaguered_Fence_-_Sotha}}&lt;br /&gt;
|2010-06-23&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|22|Special Delivery, A}}&lt;br /&gt;
|Silencium18&lt;br /&gt;
|{{Bloodgate|delivery.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11247-fan-mission-a-special-delivery-by-silencium1820100612}} {{Loot|FM:TDM_A_Special_Delivery_-_Silencium18}}&lt;br /&gt;
|2010-06-12&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|21|Alchemist, The}}&amp;lt;br&amp;gt;(2010/06/04)&lt;br /&gt;
|Sotha, Fidcal&lt;br /&gt;
|{{Bloodgate|alchemist.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11170-fan-mission-the-alchemist-by-sotha-fidcal20100601}} {{Loot|FM:TDM_The_Alchemist_-_Sotha_%26_Fidcal}}&lt;br /&gt;
|2010-06-01&lt;br /&gt;
|27&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|20|Awaiting The Storm}}&lt;br /&gt;
|HappyCheeze&lt;br /&gt;
|{{Bloodgate|storm.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11095-fm-awaiting-the-storm-by-happycheeze-20200522}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-05-22&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|19|Sound Alert &amp;amp; Blackjack Trainer}}&lt;br /&gt;
|Dark Mod Team&lt;br /&gt;
| &lt;br /&gt;
|2010-05-14&lt;br /&gt;
|0.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Training &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|18|No Honor Among Thieves}}&amp;lt;br&amp;gt;(v.3.0, 2015/05/30)&lt;br /&gt;
|Goldchocobo, RailGun, Mortem Desino, Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://tinyurl.com/2a9mdcs}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10993-fan-mission-no-honor-among-thieves-20100429}} {{Loot|FM:TDM_No_Honor_Among_Thieves_-_Goldchocobo}}&lt;br /&gt;
|2010-04-29&lt;br /&gt;
|203&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Church/Cathedral; City Missions; Outdoor/Pagan, Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|17|Heart of Lone Salvation, The}}&amp;lt;br&amp;gt;(v.2.0, 2014/04/12)&lt;br /&gt;
|Fidcal, Baddcog, Bikerdude&lt;br /&gt;
|{{Bloodgate|heart.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/10878-fan-mission-the-heart-of-lone-salvation-by-fidcal-baddcog-bikerdude-20100402/?p=213506}} {{Walkthrough|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}} {{loot|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}}&lt;br /&gt;
|2010-04-02&lt;br /&gt;
|41&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|73|Lord Dufford&#039;s}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10868-fan-mission-lord-duffords-20100331}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-03-31&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|16|Builder&#039;s Influence, The}}&amp;lt;br&amp;gt;(2010/03/23)&lt;br /&gt;
|Railgun, Springheel&lt;br /&gt;
|{{Bloodgate|builders_influence.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/builders_influence.pk4}}{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10811-fan-mission-the-builders-influence-20100320/}} {{Loot|FM:TDM_The_Builders_Influence_-_Railgun%26Springheel}}&lt;br /&gt;
|2010-03-20&lt;br /&gt;
|15&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|14|Business as Usual}}&amp;lt;br&amp;gt;(v2.0 2011/09/24)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|business.pk4}}{{Mirrorlink|1=http://rapidshare.com/files/335299431/business.pk4.html}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10533-fan-mission-business-as-usual-by-b1k3rdude-14012010-christmas-fm-contest-entry/page__view__findpost__p__207055}}&lt;br /&gt;
|2010-01-14&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|12|Sons of Baltona 1, The}}&lt;br /&gt;
|Carnage&lt;br /&gt;
|{{Bloodgate|sons_of_baltona_1.pk4}} {{Mirrorlink|1=http://www.mediafire.com/?m4ywobjodm0}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10498-fan-mission-the-sons-of-baltona-1-by-carnage-20100109}}&lt;br /&gt;
|2010-01-09&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] / Baltona 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|11|Living Expenses}}&lt;br /&gt;
|Sonosuke&lt;br /&gt;
|{{Bloodgate|living_expenses.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10451-fm-living-expenses-by-sonosuke-2-jan-10/page__view__findpost__p__205386}}&lt;br /&gt;
|2010-01-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|10|Trapped!}}&lt;br /&gt;
|RailGun&lt;br /&gt;
|{{Bloodgate|trapped.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10442-fm-trapped-by-railgun-dec-30/page__view__findpost__p__205092}}&lt;br /&gt;
|2009-12-30&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|8|Parcel, The}}&lt;br /&gt;
|Xonze&lt;br /&gt;
|{{Bloodgate|parcel.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10404-fm-the-parcel-by-xonze-dec-24/page__view__findpost__p__204459}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|9|Too Late}}&lt;br /&gt;
|Nielsen74&lt;br /&gt;
|{{Bloodgate|too_late.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10400-fm-too-late-by-nielsen74-24-dec-09/page__view__findpost__p__204396}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|7|Thieves}}&lt;br /&gt;
|Silencium, RailGun, Fidcal&lt;br /&gt;
|{{Bloodgate|thieves.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10286-fm-the-thieves-nov-2509/}}&lt;br /&gt;
|2009-11-26&lt;br /&gt;
|9&lt;br /&gt;
|No &amp;lt;br&amp;gt; [https://www.moddb.com/mods/the-dark-mod/addons/unofficial-thieves-efx  Unofficial EFX Build]&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|6|Patently Dangerous}}&amp;lt;br&amp;gt;(v.2.0, 2013/10/08)&lt;br /&gt;
|demagogue&lt;br /&gt;
|{{Bloodgate|patently_dangerous.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10125-fm-patently-dangerous-oct3109/page__view__findpost__p__199324/}}&lt;br /&gt;
|2009-10-31&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|5|Dark Mod Training Mission, The}}&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|training_mission.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9932-fm-training-mission-17-oct-09/}}&lt;br /&gt;
|2009-10-17&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Training &amp;lt;br&amp;gt; Platforming/Jumping&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|2|Crown of Penitence, The}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|crow_of_penitence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9934-fm-crown-of-penitence-by-jesps-17-oct-09/}}&lt;br /&gt;
|2009-10-16&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|3|Chalice of Kings, The}}&amp;lt;br&amp;gt;(v.2.0, 2015/09/24) (Bikerdude and Xarg)&lt;br /&gt;
|Fidcal&lt;br /&gt;
|{{Bloodgate|chalice.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9935-fm-chalice-of-kings-by-fidcal-17-oct-09/}} {{Loot|FM:TDM_Chalice_of_Kings_-_Fidcal}}&lt;br /&gt;
|2009-10-15&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|1|Outpost, The}}&lt;br /&gt;
|angua, greebo&lt;br /&gt;
|{{Bloodgate|outpost.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9937-fm-the-outpost-by-angua-greebo-17-oct-09/}}&lt;br /&gt;
|2008-12-23&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|15|Mission 2: Tears of Saint Lucia, The}}&amp;lt;br&amp;gt;(v.3.0, 2017/02/14)&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|saintlucia.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10579-fan-mission-the-tears-of-st-lucia-20081021/page__view__findpost__p__207972}} {{Loot|FM:TDM_The_Tears_of_Saint_Lucia_-_jdude}} [https://www.youtube.com/watch?v=yrGxoi3LSGg Briefing]&lt;br /&gt;
|2008-10-21&lt;br /&gt;
|20.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|57|Closemouthed Shadows}}&amp;lt;br&amp;gt;(v.2.0, 2012/01/15)&lt;br /&gt;
|LordSavage, Bikerdude&lt;br /&gt;
|{{Bloodgate|closemouthed_shadows.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/13383-fan-mission-closemouthed-shadows-2008-reworked-for-tdm-107-20120115/}} &lt;br /&gt;
|2008-09-21&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|Closemouthed Shadows 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|24|Thief&#039;s Den}}&amp;lt;br&amp;gt;(v.2.0, 2010/07/04)&lt;br /&gt;
|Fidcal, greebo&lt;br /&gt;
|{{Bloodgate|thiefs_den.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11347-fan-mission-thiefs-den-re-release-by-fidcal20100704}} {{Walkthrough|FM:TDM_Thief&#039;s_Den_-_Fidcal}} {{Loot|FM:TDM_Thief%27s_Den_-_Fidcal}}&lt;br /&gt;
|2008-01-18&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To see a speculative list of Upcoming Fan Missions, please visit: [[Upcoming Fan Missions]]&lt;br /&gt;
&lt;br /&gt;
== Table notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links Key&#039;&#039;&#039;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|[http://wik.thedarkmod.com/images/b/be/Icon_forum.png http://wiki.thedarkmod.com/images/b/be/Icon_forum.png]&lt;br /&gt;
|Link to discussion in Forums&lt;br /&gt;
|-&lt;br /&gt;
|{{Mirrorlink|}}&lt;br /&gt;
|Misc. download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Bloodgate|}}&lt;br /&gt;
|Bloodgate download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Loot|}}&lt;br /&gt;
|Loot list&lt;br /&gt;
|-&lt;br /&gt;
|{{Walkthrough|}}&lt;br /&gt;
|Walkthrough&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mission Type Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bear in mind that individual FMs can have combinations of two or three of these overarching genres/themes, rather than just a single one.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Bank Jobs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside a local banking institution. Will often contain the outsmarting of security systems, gaining access to a safe and cracking its code.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Castle/Fortress&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside or outside a castle or fortress, either one that serves as a military garrison, or as someone&#039;s private residence. Frequently involves background characters from the nobility. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;City Missions&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission that is set mainly in the streets and public spaces of an urban area, such as a town or city. Though the player is most often out on the streets, these missions tend to also involve some degree of exploration and infiltration into private and public buildings alike.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Church/Cathedral&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in and around religious buildings and institutions, such as churches, monasteries, cathedrals, church bureaus, church workshops, etc. Frequently involves [[Clergy/Builder_Characters|ecclesiastical characters]] from the TDM setting&#039;s [[Builders|Builder Church]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Experimental&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves some creative design or gameplay element that isn&#039;t typical for the vast majority of TDM missions. FMs set in highly unusual environments, or with a puzzle-like nature, can fit under this label.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Inn/Tavern&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set mostly in and around an inn, tavern or shanty. Usually focused on robbing some rich guest, acquiring an item stored by the guest at the inn, or gathering intel at the inn.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Jail/Prison&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving an escape from a prison (by the imprisoned player character), infiltration of a prison to gather intel from inmates or help an inmate escape the prison, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Lost Civilizations&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focused on the exploration of ancient ruins, whether above ground or in deep subterranean caverns. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Horror&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission with an overt horror theme. Depending on the author&#039;s approach and intentions, it can focus on psychological horror, or horror based on danger from supernatural threats, or varying combinations of both. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Mansion/Estate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside someone&#039;s private residence (a fancy house, a manor house) and its surrounding grounds. Frequently involves background characters from the nobility or the more affluent townsmen or citizens. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Museum Heists&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on a heist in a museum, art gallery or other institution storing priceless artefacts, artworks, gemstone collections, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Caves&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, but involving the exploration of natural caves and caverns.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Daylight&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly outdoor environment, during the daytime (in contrast to the usual TDM missions, set at night time or early dusk).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Pagan&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, involving some presence of [[Pagans|pagan tribes]] from TDM&#039;s setting. Perhaps even pagan camps and settlements.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Pirate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the presence of characters engaging in piracy or smuggling, and various related piratical themes. Can overlap with the &#039;&#039;Ship&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Platforming/Jumping&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on testing the player&#039;s movement, jumping and climbing skills, with or without equipment. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Sewers&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves the use of the city sewers or others sewers in some way, often as a stealthy means of entry or escape.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Ship&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place aboard a vessel, in port or at sea, or otherwise involves ships to a great degree. Can overlap with the &#039;&#039;Pirate&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Thieves&#039; Highway / Rooftop&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a lot of movement and travel on the rooftops of a town or city (colloquially &amp;quot;The Thieves&#039; Highway&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the exploration of old tombs, catacombs and crypts, often for the purposes of treasure and artefact hunting. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Lost Civilizations&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Training&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission label that is unique to the official Training Mission, an open-ended tutorial mission where players can practice and test their TDM gameplay skills at their own leisure, and to the smaller blackjacking-trainer FM, which focuses on practicing NPC knockouts by the player.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Warehouse&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place in and around a warehouse, usually in some industrial area of a city, or at a port. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contest Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GCC 09: [[Fan_Mission_Contests#2009 Grand Christmas Contest|Grand Christmas Contest 2009]]&lt;br /&gt;
&lt;br /&gt;
SVC 10: [[Fan_Mission_Contests#2010 Summer Vertical Contest|Summer Vertical Contest 2010]]&lt;br /&gt;
&lt;br /&gt;
CSC 11: [[Fan_Mission_Contests#2011 Community Seasons Contest|Community Seasons Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
HSC 11: [[Fan_Mission_Contests#2011 Halloween Speed-build Contest|Halloween Speed-Build Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
CBC 12: [[Fan_Mission_Contests#2012 Community Beginner Contest|Community Beginner Contest 2012]]&lt;br /&gt;
&lt;br /&gt;
CUC 13: [[Fan_Mission_Contests#2013 Community Unusual Contest|Community Unusual Contest 2013]]&lt;br /&gt;
&lt;br /&gt;
HSC 14: [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|Halloween Speed-Build Contest 2014]]&lt;br /&gt;
&lt;br /&gt;
HSC 15: [[Fan_Mission_Contests#2015 Halloween Speed-build Contest|Halloween Speed-Build Contest 2015]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Editing this table ==&lt;br /&gt;
* Please only include playable missions that are fully released, not those currently in development or testing.  Tutorials, demos, prefabs, etc. should be listed elsewhere. &lt;br /&gt;
* A mission title may be listed in plain text as a record of release, or preferably a link to an information page or primary direct download.&lt;br /&gt;
* List by release date descending (newest at the top).&lt;br /&gt;
* If a fan mission only has a single mirror/host please consider adding additional mirrors.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Fan Mission Series]] - An overview of all currently known series or campaigns of fan missions interconnected by their stories or characters. There are already plenty in TDM, and have been since its early days as an expandable game.&lt;br /&gt;
* [[Mission recommendation discussions]] - An overview of past discussions on what FMs the community recommends to players looking for various challenges (difficulty, size, theme, setting, objectives, etc.).&lt;br /&gt;
* [[Fan Mission Contests]] - An overview of past and present contests in Fan Mission creation, by members of the TDM community.&lt;br /&gt;
* [[Upcoming Fan Missions]] - An overview of Fan Missions in development or tentatively planned. (&#039;&#039;Do not&#039;&#039; edit the overview.)&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;br /&gt;
[[Category:Official FMs| ]]&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=25494</id>
		<title>Fan Missions for The Dark Mod</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=25494"/>
		<updated>2019-09-03T18:24:51Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: Why was Vitalic Fever listed as a city mission?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{infobox|&amp;lt;center&amp;gt;&#039;&#039;&#039;Big Ugly Disclaimer:&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;The Dark Mod&#039;&#039;&#039; team does not necessarily support or endorse content listed here, and only hosts missions listed on the [http://www.thedarkmod.com/ official TDM website]. This is a community maintained list, and an ongoing work in progress.  Most of the mirror links in this list are dead or are for missions that are not 2.0 compliant. Mission entries which are suspected to violate copyright must be text-only, and cannot contain links.  Report and/or remove links found in violation of this rule.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* For details about editing this table, see [[#Editing_this_table|below]].&lt;br /&gt;
* For details about how to install Fan Missions please visit: [[Installing and Running Fan Missions]]&lt;br /&gt;
* To sort by a different criterion, click the [[Image:Sort none.gif]] icon in the relevant column header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;21%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;11%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;4%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|First Release&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|Size (MB)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;3%&amp;quot;|EFX Reverb&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Series&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;13%&amp;quot;|Mission Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;6%&amp;quot;|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT NEW MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|138|Hidden Hands: Vitalic Fever}}&lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/20051-hidden-hands-vitalic-fever-20072019}}&lt;br /&gt;
|2019-07-20&lt;br /&gt;
|269&lt;br /&gt;
|Yes&lt;br /&gt;
|Hidden Hands 2&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spiders, undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|137|Chronicles of Skulduggery 2: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19975-fan-mission-chronicles-of-skulduggery-2-a-precarious-position-20190504/}}&lt;br /&gt;
|2019-05-04&lt;br /&gt;
|14.5&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Chronicles_of_Skulduggery_series|Chronicles of Skulduggery]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|136|William Steele 5: Commerce Bank}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19957-fan-mission-commerce-bank-by-grayman-2019410/}}&lt;br /&gt;
|2019-04-10&lt;br /&gt;
|30&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|135|Marsh of Rahena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19951-fan-mission-marsh-of-rahena-by-erh-201945}}&lt;br /&gt;
|2019-04-05&lt;br /&gt;
|60.3&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress, Horror &lt;br /&gt;
|Undead, Spiders, Horror Themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|134|Shadows of Northdale ACT 2}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19936-fan-mission-shadows-of-northdale-act-ii-by-goldwell-20190320/}} [https://www.youtube.com/watch?v=KO-eIOX9nqI Briefing]&lt;br /&gt;
|2019-03-20&lt;br /&gt;
|417&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|133|Cleaning Up the Neighbourhood}}&lt;br /&gt;
|some1stoleit and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19898-fan-mission-cleaning-up-the-neighbourhood-by-some1stoleitbikerdude-20190219/}}&lt;br /&gt;
|2019-02-18&lt;br /&gt;
|34.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|132|Hidden Hands: Initiation}}&lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19796-hidden-hands-initiation-27122018/}}&lt;br /&gt;
|2018-12-27&lt;br /&gt;
|92.5&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt;Ship&lt;br /&gt;
|Spiders, Extra-natural entities&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|131|The Night of Reluctant Benefaction}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19787-fan-mission-the-night-of-reluctant-benefaction/}}&lt;br /&gt;
|2018-12-24&lt;br /&gt;
|11.9&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|130|Mission of Mercy}}&lt;br /&gt;
|joebarnin&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19642-fan-mission-mission-of-mercy-by-joebarnin-20180914/}}&lt;br /&gt;
|2018-09-14&lt;br /&gt;
|10.1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|129|William Steele 4: The Warrens}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19618-fan-mission-the-warrens-by-grayman-201891/}}&lt;br /&gt;
|2018-09-01&lt;br /&gt;
|53&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|128|Braeden Church}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19533-fan-mission-braeden-church-by-grayman-201871/}}&lt;br /&gt;
|2018-07-01&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|127|Chronicles of Skulduggery: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19439-chronicles-of-skulduggery-pearls-and-swine/}}&lt;br /&gt;
|2018-05-25&lt;br /&gt;
|23&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Chronicles_of_Skulduggery_series|Chronicles of Skulduggery]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|126|Shadows of Northdale ACT I}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19368-fan-mission-shadows-of-northdale-act-i-by-goldwell-20180323/}} [https://www.youtube.com/watch?v=p4nP3lYd6wg Briefing]&lt;br /&gt;
|2018-03-23&lt;br /&gt;
|295&lt;br /&gt;
|Custom &amp;lt;br&amp;gt;(not EFX)&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|125|Sir Taffsalot&#039;s Sword}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19361-fan-mission-sir-taffsalots-sword-by-grayman-2018318/}}&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; In memoriam of Gary (Sir Taffsalot) {{Forumlink|http://forums.thedarkmod.com/topic/19306-sad-news-we-lost-one-of-our-own-sir-taffsalot/}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|124|The Arena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19350-fan-mission-the-arena-by-erh/}}&lt;br /&gt;
|2018-03-12&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Arena Deathmatch &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|123|The Elixir}}&lt;br /&gt;
|Bikerdude and Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19323-fan-mission-the-elixir-by-b1k3rdude-obsttorte-17022018/}} [https://www.youtube.com/watch?v=KfElYZs-FaE Briefing]&lt;br /&gt;
|2018-02-17&lt;br /&gt;
|112&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|122|Volta 2: Cauldron of the Gods}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19207-volta-ii-cauldron-of-the-gods/}} [https://www.youtube.com/watch?v=SRRCRVFHruc Briefing]&lt;br /&gt;
|2017-11-30&lt;br /&gt;
|252&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|121|In the Black}}&lt;br /&gt;
|VanishedOne&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19185-fan-mission-in-the-black/}}&lt;br /&gt;
|2017-11-18&lt;br /&gt;
|103&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|120|Accountant 1: Thieves and Heirs}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19164-fan-mission-the-accountant-1-thieves-and-heirs-by-goldwell-20171108}} [https://www.youtube.com/watch?v=Tk9DtOT4kjc Briefing]&lt;br /&gt;
|2017-11-08&lt;br /&gt;
|247&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|119|King of the Mountain}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19105-fan-mission-king-of-the-mountain-by-spoonman-18092017/}}&lt;br /&gt;
|2017-09-18&lt;br /&gt;
|8.07&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|118|Briarwood Manor}}&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18980-fan-mission-briarwood-manor-by-neonsstyle-first-mission-2017-07-11}} [https://www.youtube.com/watch?v=BZnSuLVatYM Trailer] [https://www.youtube.com/watch?v=CPlu8fEzyGM Briefing]&lt;br /&gt;
|2017-07-11&lt;br /&gt;
|90&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spider&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|117|A Matter of Hours}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18809-fan-mission-a-matter-of-hours-by-springheel-2842017/}}&lt;br /&gt;
|2017-04-28&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan Mission Series#Corbin series|Corbin]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|116|The Ravine}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18782-fan-mission-the-ravine-by-spoonman-17042017/}}&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|30.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|115|The Bakery Job}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18707-fan-mission-the-bakery-job-by-sotha-20170309/}}&lt;br /&gt;
|2017-03-09&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM||Mission 1: A New Job}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18647-tdm-205-official-introductory-missions/}}&lt;br /&gt;
|2017-03-14&lt;br /&gt;
|13.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|114|Coercion}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18405-fan-mission-coercion-by-sotha-20160927}}&lt;br /&gt;
|2016-09-27&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|113|Down by the Riverside}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18402-fan-mission-down-by-the-riverside-by-dragofer-20160925}}&lt;br /&gt;
|2016-09-25&lt;br /&gt;
|56&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Horror themes, Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|112|Penny Dreadful 3: Erasing the Trail}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18200-fan-mission-penny-dreadful-3-by-melan-and-bikerdude-20160710}}&lt;br /&gt;
|2016-07-09&lt;br /&gt;
|200&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|111|Volta 1: Volta and the Stone}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016}}&lt;br /&gt;
|2016-05-27&lt;br /&gt;
|102&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|110|Full Moon Fever}}&amp;lt;br&amp;gt;(v2.0 2018/02/21)&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18066-fan-mission-full-moon-fever-by-spoonman-14052016/}}&lt;br /&gt;
|2016-05-14&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|109|King of Diamonds}}&lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18064-fan-mission-the-king-of-diamonds-by-spooks-20160513}}&lt;br /&gt;
|2016-05-13&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|Occult themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|108|Accountant 2: New in Town}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18054-fan-mission-the-accountant-2-new-in-town-by-goldwell-20160509/}} [https://www.youtube.com/watch?v=xeuIO_GcYjQ Briefing] &amp;lt;br&amp;gt; [https://www.youtube.com/watch?v=w6e_SJ0_JOM Gameplay trailer] &lt;br /&gt;
|2016-05-08&lt;br /&gt;
|358&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|107|The Smiling Cutpurse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17850-fan-mission-the-smiling-cutpurse-by-airship-ballet-20160325/}}&lt;br /&gt;
|2016-03-25&lt;br /&gt;
|87&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|106|Mother Rose}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17653-fan-mission-mother-rose-by-grayman-20160101/#entry385131/}}&lt;br /&gt;
|2016-01-01&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Ghost&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|105|Behind Closed Doors}}&lt;br /&gt;
|Bikerdude and the Crucible Team&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/}}&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|359&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Crucible of Omens series|Crucible of Omens]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|103|The Rats Triumphant}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17512-fan-mission-the-rats-triumphant-by-melan-20151031/}}&lt;br /&gt;
|2015-10-31&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]] (Winner)&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|104|Dead Drunk}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17511-fan-mission-dead-drunk-by-stumpy-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|97|Thief&#039;s Remorse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17509-fan-mission-thiefs-remorse-by-airship-ballet-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|42&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|102|Spring Cleaning}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17510-fan-mission-spring-cleaning-by-goldwell-20151030/}} [https://www.youtube.com/watch?v=JzPpmDK9Fxw Briefing] &lt;br /&gt;
|2015-10-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|96|The Golden Skull}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17497-fan-mission-the-golden-skull-by-sotha-20151024/}}&lt;br /&gt;
|2015-10-25&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|101|A House of Locked Secrets}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17163-fan-mission-a-house-of-locked-secrets-by-gelo-moonbo-fleisher-20150528/}} [https://www.youtube.com/watch?v=f5NuTJEZ8VE Trailer]&lt;br /&gt;
|2015-05-29&lt;br /&gt;
|195&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|Horror themes &amp;lt;br&amp;gt; Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|100|Ulysses 2: Protecting the Flock}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17162-fan-mission-ulysses-2-protecting-the-flock-by-sotha-20150528/}}&lt;br /&gt;
|2015-05-28&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|99|Sir Talbot&#039;s Collateral}}&lt;br /&gt;
|Baal and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17093-fan-mission-sir-talbots-collateral-by-baal-bikerdude-15042015/}} [https://www.youtube.com/watch?v=e3rdZfq4Omc Trailer]&lt;br /&gt;
|2015-04-15&lt;br /&gt;
|60&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|98|Vengeance for a Thief Part 3}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16953-the-complete-vengeance-for-a-thief-campaign/}}&lt;br /&gt;
|2015-02-16&lt;br /&gt;
|25&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|95|Lord Edgar&#039;s Bathhouse}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16828-fan-mission-lord-edgars-bathhouse-by-goldwell-27122014/}} [https://www.youtube.com/watch?v=vYSZY7VzFEo Briefing]&lt;br /&gt;
|2014-12-27&lt;br /&gt;
|71&lt;br /&gt;
|No&lt;br /&gt;
|Lord Edgar&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|94|Quinn Co.}}&amp;lt;br&amp;gt;(Made into a campaign, 2015/02/04)&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16912-fan-mission-chase-mercantile-by-airship-ballet-20150204/}}&lt;br /&gt;
|2014-11-22&lt;br /&gt;
|111&lt;br /&gt;
|No&lt;br /&gt;
|Quinn Co.&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|93|Exhumed}}&lt;br /&gt;
|Airship Ballet and Kyyrma&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16658-fan-mission-exhumed-by-kyyrma-and-airship-ballet-20141104/}}&lt;br /&gt;
|2014-11-04&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|92|Briarwood Cathedral}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www64.zippyshare.com/v/25705489/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16644-briarwood-cathedral/}}&lt;br /&gt;
|2014-10-29&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|91|One Step Too Far}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Mirrorlink|https://www.dropbox.com/s/sfxcap1gfdzf318/onesteptoofar.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16457-fan-mission-one-step-too-far-by-dragofer-20140804/}}&lt;br /&gt;
|2014-08-04&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|90|Lockner Manor}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www76.zippyshare.com/v/44108372/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16452-new-mission-lockner-manor/}}&lt;br /&gt;
|2014-08-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|89|Ulysses: Genesis}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|http://www4.zippyshare.com/v/67195436/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16428-fan-mission-ulysses-genesis-by-sotha-20140724/}}&lt;br /&gt;
|2014-07-24&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Horror theme?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|88|Penny Dreadful 2: All the way up}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://mega.co.nz/#!EwoXHZYZ!tE_sKon2h4AWtWPNt9QS3FQClwmXdimhfjIMPcpCQ34}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16387-fan-mission-penny-dreadful-2-by-melan-and-bikerdude-2014078/}} [https://www.youtube.com/watch?v=WmPfCfbeWvg Trailer]&lt;br /&gt;
|2014-07-08&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|87|Poets and Peasants}}&lt;br /&gt;
|Digi&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B1HHvWAgbWGfTkI0SXFubXZucXM}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16373-fan-mission-poets-peasants-by-digi-62914}}&lt;br /&gt;
|2014-06-29&lt;br /&gt;
|1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|85|A Reputation to Uphold}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Mirrorlink|http://www.mindplaces.com/follow.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16204-fan-mission-a-reputation-to-uphold-by-springheel/}}&lt;br /&gt;
|2014-04-18&lt;br /&gt;
|25.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|86|Breaking Out the Fence}}&lt;br /&gt;
|Kyyrma&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/breakingout.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16091-fan-mission-breaking-out-the-fence-17032014-by-kyyrma/}}&lt;br /&gt;
|2014-03-17&lt;br /&gt;
|11.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|83|Inn Business}}&amp;lt;br&amp;gt;(v.1.48, 2014/03/08)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTYWVaODRiSExGeGc}} {{Forumlink|1=http://forums.thedarkmod.com/topic/16018-fan-mission-inn-business-by-rjferret-20140303/}}&lt;br /&gt;
|2014-03-03&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Inn/Tavern &amp;lt;br&amp;gt; City Streets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|82|William Steele 3: Cleighmoor}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16011-fan-mission-cleighmoor-by-grayman-201431/#entry338349/}}&lt;br /&gt;
|2014-03-01&lt;br /&gt;
|38&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Sewers &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|81|William Steele 2: Home Again}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/15919-fan-mission-home-again-by-grayman-2014212/page__fromsearch__1}}&lt;br /&gt;
|2014-02-12&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|80|The Gatehouse}}&lt;br /&gt;
|Bikerdude Goldchocobo&lt;br /&gt;
|{{Mirrorlink|http://www.southquarter.com/tdm/fms/gatehouse.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15844-fan-mission-the-gatehouse-by-bikerdude-goldchocobo-20140114/}} [https://www.youtube.com/watch?v=kcIe2Ucojqw Briefing]&lt;br /&gt;
|2014-01-29&lt;br /&gt;
|100&lt;br /&gt;
|No&lt;br /&gt;
|Remake of Evilartist&#039;s Doom 3 mod&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|79|Window of Opportunity}}&amp;lt;br&amp;gt;(v.1.43, 2014/01/01)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTWTMzQXZtMVFBSG8}} {{Forumlink|1=http://forums.thedarkmod.com/topic/15727-fan-mission-window-of-opportunity-by-rjferret-20140101/}}&lt;br /&gt;
|2014-01-01&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|Spiders (not in short mode)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|78|In A Time Of Need}}&lt;br /&gt;
|kyyrma&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/a97or40t1xrybh3/timeofneed_v1.zip}} {{Forumlink|http://forums.thedarkmod.com/topic/15354-fan-mission-in-a-time-of-need-by-kyyrma-20131112/}}&lt;br /&gt;
|2013-11-12&lt;br /&gt;
|5.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|76|Requiem}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/l6o3vvj9y78hu89/requiem.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15101-fan-mission-requiem-by-gelo-moonbo-fleisher-2013106/}}&lt;br /&gt;
|2013-10-08&lt;br /&gt;
|107.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Lost Civilizations &amp;lt;br&amp;gt; Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|75|Vengeance for a Thief Part 2}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/vfat2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15051-fan-mission-vengeance-for-a-thief-part-2-by-sir-taffsalot-06092013/}}&lt;br /&gt;
|2013-09-06&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Museum Heists&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|74|Lords and Legacy}}&lt;br /&gt;
|Kvorning&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lordsnlegacy.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15016-fan-mission-lords-legacy-by-kvorning-20130830/}}&lt;br /&gt;
|2013-08-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|72|Not An Ordinary Guest}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/naog.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14965-fan-mission-not-an-ordinary-guest-by-fieldmedic-20130801/}}&lt;br /&gt;
|2013-08-01&lt;br /&gt;
|79.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|71|Penny Dreadful: Grail of Regrets}}&lt;br /&gt;
|Melan&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14952-fan-mission-penny-dreadful-by-melan-20130728/}}&lt;br /&gt;
|2013-07-27&lt;br /&gt;
|74&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Horror &lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|70|Solar Escape 1}}&lt;br /&gt;
|Tr00pertj&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14944-fan-mission-solar-escape-1/}}&lt;br /&gt;
|2013-07-22&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|69|The Lich Queen&#039;s Demise}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lich_queens_demise.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14826-fan-mission-the-lich-queens-demise-by-sotha-20130520/unread/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|97.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]] (Winner)&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|77|Old Habits Rebuild}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download/u2gwucibh17c45a/oldhabits.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14827-fan-mission-old-habits-rebuild-by-obsttorte-20052013/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|28.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|68|The Builder&#039;s Blocks}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/builders_blocks.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14592-unusual-gameplay-contest-fm-the-builders-blocks-by-jesps/}}&lt;br /&gt;
|2013-03-18&lt;br /&gt;
|2.85&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|67|Crystal Grave}} &amp;lt;br&amp;gt;(v.2.0, 2013/02/09)&lt;br /&gt;
|ERH+ Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://dl.dropbox.com/u/17706561/crystalgravev2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14510-fan-mission-crystal-grave-v2-by-erh-and-bikerdude-20130209/unread/}}&lt;br /&gt;
|2011-11-15&lt;br /&gt;
|12.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|66|The Builder Roads}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/14449-fan-mission-the-builder-roads-by-obsttorte-20130119/}}&lt;br /&gt;
|2013-01-19&lt;br /&gt;
|?&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|65|William Steele 1: In the North}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|ws1_north.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14214-fan-mission-in-the-north-by-grayman-20121020/}}&lt;br /&gt;
|2012-10-20&lt;br /&gt;
|39.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|64|Old Habits}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download.php?andes2xnsonssfj}} {{Forumlink|http://forums.thedarkmod.com/topic/14206-fan-mission-old-habits-by-obsttorte-20121019/}}&lt;br /&gt;
|2012-10-19&lt;br /&gt;
|12.8&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|63|Deceptive Shadows}}&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|DeceptiveShadows.pk4}} {{Mirrorlink|http://www.sendspace.com/file/jzr9s7}} {{Forumlink|http://forums.thedarkmod.com/topic/14103-fan-mission-deceptive-shadows-by-shadowhide-16sep12/}}&lt;br /&gt;
|2012-09-16&lt;br /&gt;
|22.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|62|Vengeance for a Thief: Part 1}}&lt;br /&gt;
|Sir Taffsalot &lt;br /&gt;
|{{Bloodgate|VFAT1.pk4}} {{Mirrorlink|https://dl.dropbox.com/u/17706561/VFAT1.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14068-fan-mission-vengeance-for-a-thief-part-1-by-sir-taffsalot-06092012/}}&lt;br /&gt;
|2012-09-06&lt;br /&gt;
|20.9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|61|The Phrase Book}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|phrase_book.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/phrase_book.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13799-fan-mission-the-phrase-book-by-sotha-20120512/}}&lt;br /&gt;
|2012-05-11&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|60|In Remembrance of Him}}&lt;br /&gt;
|RPGista&lt;br /&gt;
|{{Bloodgate|remembrance.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/remembrance.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13749-fan-mission-in-remembrance-of-him-by-rpgista/}}&lt;br /&gt;
|2012-04-22&lt;br /&gt;
|27.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|59|Rightful Property}}&lt;br /&gt;
|jysk&lt;br /&gt;
|{{Bloodgate|rightful.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/rightful1.1b.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13711-fan-mission-rightful-property-by-jysk-20120413/}}&lt;br /&gt;
|2012-04-12&lt;br /&gt;
|22.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|58|Sneak and Destroy}}&lt;br /&gt;
|SeriousToni&lt;br /&gt;
|{{Bloodgate|kneipe24.pk4}} {{Mirrorlink|http://minus.com/mVcf61n3G/1f}} {{Forumlink|http://forums.thedarkmod.com/topic/13706-fan-mission-sneak-destroy-by-serioustoni-beginners-contest-2012/}}&lt;br /&gt;
|2012-04-11&lt;br /&gt;
|158&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|56|House of Theo}}&lt;br /&gt;
|Theothesnopp&lt;br /&gt;
|{{Bloodgate|houseoftheo.pk4}} {{Mirrorlink|http://www.gamefront.com/files/21053391/houseoftheo__2__2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13242-fan-mission-house-of-theo/}}&lt;br /&gt;
|2011-12-04&lt;br /&gt;
|6.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|53|Dragon&#039;s Claw}}&lt;br /&gt;
|Bikerdude, Flanders (map assets)&lt;br /&gt;
|{{Bloodgate|claw.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20948800/claw.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13181-fan-missiondragons-claw-by-b1k3rdude-31102011/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|52|A Night to Remember}}&amp;lt;br&amp;gt;(v2.0, 2018/05/28)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|antr.pk4}} New &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/19452-a-night-to-remember/}} &amp;lt;br&amp;gt;Old &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/13177-fan-mission-a-night-to-remember-by-fieldmedic-20111030/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|33&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|51|The Creeps}}&lt;br /&gt;
|Mortem Desino&lt;br /&gt;
|{{Bloodgate|thecreeps.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20939925/thecreeps.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13176-fan-mission-creeps-the-20111030-by-mortem-desino/}}&lt;br /&gt;
|2011-10-30&lt;br /&gt;
|61&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|50|House in Blackbog Hollow}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Bloodgate|blackbog.pk4}}{{Mirrorlink|http://www.bookofages.co.uk/doom3/mods/blackbog.html}} {{Forumlink|http://forums.thedarkmod.com/topic/13172-fan-mission-house-in-blackbog-hollow-by-stumpy-20111028/}}&lt;br /&gt;
|2011-10-28&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|49|Let Sleeping Thieves Lie}}&lt;br /&gt;
|Sir Taffsalot, Bikerdude&lt;br /&gt;
|{{Bloodgate|lstl.pk4}}{{Mirrorlink|http://www.mediafire.com/?zkd1jn4lpwgioh9}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13153-let-sleeping-thieves-lie-by-sir-taffsalot-bikerdude-20102011/}}&lt;br /&gt;
|2011-10-20&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|48|Samhain Night}}&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Bloodgate|samhain.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/samhain.zip}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13127-fan-mission-samhain-night-on-bone-hill-by-pranqster-20111009/}}&lt;br /&gt;
|2011-10-09&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|47|A Score to Settle}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Bloodgate|score_to_settle.pk4}}{{Mirrorlink|http://www.mediafire.com/?f3o7hm4h4ew7o3l}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12894-fan-mission-%2348-a-score-to-settle-by-springheel-20110701/}}&lt;br /&gt;
|2011-07-01&lt;br /&gt;
|135&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|46|Siege Shop}}&amp;lt;br&amp;gt;(v3.0 2013/10/10)&lt;br /&gt;
|PranQster and Lowenz&lt;br /&gt;
|{{Bloodgate|siegeshop.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/siegeshop.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12874-fan-mission-the-siege-shop-by-pranqster-20110626/}}&lt;br /&gt;
|2011-06-26&lt;br /&gt;
|20.51&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|44|Alberic&#039;s Curse}}&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|alberic.pk4}} {{Mirrorlink|http://www.gamefront.com/files/20459738/alberic.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12850-fan-mission-alberics-curse-by-b1k3rdude-20062011/}}&lt;br /&gt;
|2011-06-20&lt;br /&gt;
|29&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] (Winner) &amp;lt;br&amp;gt; T2 FM homage&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|45|Reap As You Sow}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|reap.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12849-fan-mission-reap-as-you-sow-by-fieldmedic-20110619/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|52&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Daylight &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|43|Rake Off}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|rake_off.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12846-fm-rake-off-19-06-2011/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] &lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|42|Winter Harvest}}&amp;lt;br&amp;gt;(v2.0 2011/07/24 with Bikerdude)&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|winterharvest.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12690-seasons-contest-entry-winter-harvest-by-shadowhide/}}&lt;br /&gt;
|2011-05-08&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|41|Fiasco at Fauchard Street}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Bloodgate|fauchard.pk4}} {{Mirrorlink|https://rapidshare.com/files/460141132/fauchard.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12655-fan-mission-fiasco-at-fauchard-street-by-melan-20110501//}}&lt;br /&gt;
|2011-05-01&lt;br /&gt;
|62&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|40|Mandrasola}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|mandrasola.pk4}} {{Mirrorlink|http://www.mediafire.com/?2ox2nbhh796ne71}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12575-fan-mission-mandrasola-by-sotha-20110410/}}&lt;br /&gt;
|2011-04-10&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.southquarter.com/tdm/fms/yantdm1.1.pk4 Q4 Conversion: Yan&#039;s Test]&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12506-fan-mission-q4-map-conversion-yantdm1-280311/}}&lt;br /&gt;
|2011-03-28&lt;br /&gt;
|28&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|38|The Transaction}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|transaction.pk4}} {{Mirrorlink|http://www.mediafire.com/?ux7mx79wumnvcb6}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12408-fan-mission-the-transaction-by-sotha-20110304/}}&lt;br /&gt;
|2011-03-04&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|13|Return to the City}}&amp;lt;br&amp;gt;(v3.0 2015/01/03)&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Bloodgate|ReturnToTheCityV2.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10509-fan-mission-return-to-the-city-by-melan-20100110/}} {{Forumlink|1=http://www.ttlg.com/forums/showthread.php?t=130519/}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12390-fan-mission-return-to-the-city-v2-01032011/}}&lt;br /&gt;
|2010-01-10&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] (Winner) &lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|39|Lockdown}}&lt;br /&gt;
|GameDevGoro Bikerdude Fidcal&lt;br /&gt;
|{{Bloodgate|lockdown1_2_1.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/lockdown1_2_1.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12064-fm-lockdown-part-1-by-gamedevgoro-and-bikerdude-20101224/}}&lt;br /&gt;
|2010-12-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Lockdown 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|37|Flakebridge Monastery}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|flakebridge.pk4}} {{Mirrorlink|http://www.file-upload.net/download-3024426/flakebridge.pk4.html}} {{Mirrorlink|http://rapidshare.com/files/434997519/flakebridge.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11991-fm-flakebridge-monastery-by-jesps/}}&lt;br /&gt;
|2010-12-05&lt;br /&gt;
|16&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|36|Knighton Manor, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|knighton_manor.pk4}} {{Mirrorlink|http://www.mediafire.com/?xrdts3j4t2qxre2}}  {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11898-fan-mission-the-knighton-manor-by-sotha-20101109/page__view__getnewpost}}&lt;br /&gt;
|2010-11-09&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|35|St Albans Cathedral}}&amp;lt;br&amp;gt;(v2.0 2014/06/11)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|stac160.pk4}} [[http://www.bloodgate.com/fms/stac142.pk4 Classic]] {{Mirrorlink|http://www.filefront.com/17464439/stac141.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16343-fan-mission-st-albans-cathedral-v20-11062014/}} {{Loot|FM:TDM_St_Alban&#039;s_Cathedral_-_Bikerdude}}&lt;br /&gt;
|2010-11-01&lt;br /&gt;
|67&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|33|Swing}}&lt;br /&gt;
|Komag&lt;br /&gt;
|{{Bloodgate|swing_v1.2.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11660-vertigo-contest-entry-swing-by-komag-20100825/}} {{Loot|FM:TDM_Swing_-_Komag}}&lt;br /&gt;
|2010-08-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Platforming/Jumping &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|32|The Caduceus of St. Alban}}&amp;lt;br&amp;gt;(v.1.5.5 2010/08/26)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{bloodgate|stalban.pk4}} {{Mirrorlink|http://www.filefront.com/17237609/stalban.pk4/}}{{Forumlink|http://forums.thedarkmod.com/topic/11644-the-caduceus-of-st-alban-vertical-fm-contest-entry-aug-8th-2010/}}&lt;br /&gt;
|2010-08-23&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|30|Somewhere Above the City}}&amp;lt;br&amp;gt;(v1.1 2010/08/27)&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|somewhere1.1.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11619-vertical-contest-mission-somewhere-above-the-city-by-grayman-aug-20-2010/}} {{Loot|FM:TDM_Somewhere_Above_the_City_-_grayman}}&lt;br /&gt;
|2010-08-20&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|29|Betrayal}}&amp;lt;br&amp;gt;(v.1.1, 2010/09/01)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|betrayal.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11605-betrayal-by-fieldmedic-20100817-summer-fm-vertical-contest-entry/}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-08-17&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|31|Rift, The}}&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Bloodgate|rift.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11599-vert-contest-mission-the-rift-by-baddcog-aug-15-2010/}}&lt;br /&gt;
|2010-08-15&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|34|Illusionist&#039;s Tower}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Bloodgate|holetower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11541-illusionists-tower-by-stumpy-201085-summer-fm-vertical-contest-entry}} {{Forumlink|1=http://www.bookofages.co.uk/doom3/mods/holetower.html}} {{Loot|FM:TDM_Illusionist%27s_Tower_-_stumpy}}&lt;br /&gt;
|2010-08-05&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|28|Mad&#039;s Mountain}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|madmountain.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11510-fan-mission-mads-mountain-by-jesps-20100731}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-07-31&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|27|Glenham Tower, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|glenham_tower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11423-fan-mission-the-glenham-tower-by-sotha-20100717}}&lt;br /&gt;
|2010-07-17&lt;br /&gt;
|5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]] (Winner)&lt;br /&gt;
|Castle/Fortress &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|25|Pandora&#039;s Box}}&lt;br /&gt;
|Jesps, Fidcal&lt;br /&gt;
|{{Bloodgate|pandoras_box.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11381-fan-mission-pandoras-box-by-jesps20100711}} {{Loot|FM:TDM_Pandora%27s_Box_-_Jesps}}&lt;br /&gt;
|2010-07-11&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|23|Beleaguered Fence, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|beleaguered_fence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11298-fan-mission-the-beleaguered-fence-by-sotha-20100623}} {{Loot|FM:TDM_The_Beleaguered_Fence_-_Sotha}}&lt;br /&gt;
|2010-06-23&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|22|Special Delivery, A}}&lt;br /&gt;
|Silencium18&lt;br /&gt;
|{{Bloodgate|delivery.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11247-fan-mission-a-special-delivery-by-silencium1820100612}} {{Loot|FM:TDM_A_Special_Delivery_-_Silencium18}}&lt;br /&gt;
|2010-06-12&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|21|Alchemist, The}}&amp;lt;br&amp;gt;(2010/06/04)&lt;br /&gt;
|Sotha, Fidcal&lt;br /&gt;
|{{Bloodgate|alchemist.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11170-fan-mission-the-alchemist-by-sotha-fidcal20100601}} {{Loot|FM:TDM_The_Alchemist_-_Sotha_%26_Fidcal}}&lt;br /&gt;
|2010-06-01&lt;br /&gt;
|27&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|20|Awaiting The Storm}}&lt;br /&gt;
|HappyCheeze&lt;br /&gt;
|{{Bloodgate|storm.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11095-fm-awaiting-the-storm-by-happycheeze-20200522}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-05-22&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|19|Sound Alert &amp;amp; Blackjack Trainer}}&lt;br /&gt;
|Dark Mod Team&lt;br /&gt;
| &lt;br /&gt;
|2010-05-14&lt;br /&gt;
|0.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Training &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|18|No Honor Among Thieves}}&amp;lt;br&amp;gt;(v.3.0, 2015/05/30)&lt;br /&gt;
|Goldchocobo, RailGun, Mortem Desino, Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://tinyurl.com/2a9mdcs}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10993-fan-mission-no-honor-among-thieves-20100429}} {{Loot|FM:TDM_No_Honor_Among_Thieves_-_Goldchocobo}}&lt;br /&gt;
|2010-04-29&lt;br /&gt;
|203&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Church/Cathedral; City Missions; Outdoor/Pagan, Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|17|Heart of Lone Salvation, The}}&amp;lt;br&amp;gt;(v.2.0, 2014/04/12)&lt;br /&gt;
|Fidcal, Baddcog, Bikerdude&lt;br /&gt;
|{{Bloodgate|heart.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/10878-fan-mission-the-heart-of-lone-salvation-by-fidcal-baddcog-bikerdude-20100402/?p=213506}} {{Walkthrough|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}} {{loot|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}}&lt;br /&gt;
|2010-04-02&lt;br /&gt;
|41&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|73|Lord Dufford&#039;s}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10868-fan-mission-lord-duffords-20100331}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-03-31&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|16|Builder&#039;s Influence, The}}&amp;lt;br&amp;gt;(2010/03/23)&lt;br /&gt;
|Railgun, Springheel&lt;br /&gt;
|{{Bloodgate|builders_influence.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/builders_influence.pk4}}{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10811-fan-mission-the-builders-influence-20100320/}} {{Loot|FM:TDM_The_Builders_Influence_-_Railgun%26Springheel}}&lt;br /&gt;
|2010-03-20&lt;br /&gt;
|15&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|14|Business as Usual}}&amp;lt;br&amp;gt;(v2.0 2011/09/24)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|business.pk4}}{{Mirrorlink|1=http://rapidshare.com/files/335299431/business.pk4.html}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10533-fan-mission-business-as-usual-by-b1k3rdude-14012010-christmas-fm-contest-entry/page__view__findpost__p__207055}}&lt;br /&gt;
|2010-01-14&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|12|Sons of Baltona 1, The}}&lt;br /&gt;
|Carnage&lt;br /&gt;
|{{Bloodgate|sons_of_baltona_1.pk4}} {{Mirrorlink|1=http://www.mediafire.com/?m4ywobjodm0}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10498-fan-mission-the-sons-of-baltona-1-by-carnage-20100109}}&lt;br /&gt;
|2010-01-09&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] / Baltona 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|11|Living Expenses}}&lt;br /&gt;
|Sonosuke&lt;br /&gt;
|{{Bloodgate|living_expenses.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10451-fm-living-expenses-by-sonosuke-2-jan-10/page__view__findpost__p__205386}}&lt;br /&gt;
|2010-01-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|10|Trapped!}}&lt;br /&gt;
|RailGun&lt;br /&gt;
|{{Bloodgate|trapped.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10442-fm-trapped-by-railgun-dec-30/page__view__findpost__p__205092}}&lt;br /&gt;
|2009-12-30&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|8|Parcel, The}}&lt;br /&gt;
|Xonze&lt;br /&gt;
|{{Bloodgate|parcel.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10404-fm-the-parcel-by-xonze-dec-24/page__view__findpost__p__204459}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|9|Too Late}}&lt;br /&gt;
|Nielsen74&lt;br /&gt;
|{{Bloodgate|too_late.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10400-fm-too-late-by-nielsen74-24-dec-09/page__view__findpost__p__204396}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|7|Thieves}}&lt;br /&gt;
|Silencium, RailGun, Fidcal&lt;br /&gt;
|{{Bloodgate|thieves.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10286-fm-the-thieves-nov-2509/}}&lt;br /&gt;
|2009-11-26&lt;br /&gt;
|9&lt;br /&gt;
|No &amp;lt;br&amp;gt; [https://www.moddb.com/mods/the-dark-mod/addons/unofficial-thieves-efx  Unofficial EFX Build]&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|6|Patently Dangerous}}&amp;lt;br&amp;gt;(v.2.0, 2013/10/08)&lt;br /&gt;
|demagogue&lt;br /&gt;
|{{Bloodgate|patently_dangerous.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10125-fm-patently-dangerous-oct3109/page__view__findpost__p__199324/}}&lt;br /&gt;
|2009-10-31&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|5|Dark Mod Training Mission, The}}&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|training_mission.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9932-fm-training-mission-17-oct-09/}}&lt;br /&gt;
|2009-10-17&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Training &amp;lt;br&amp;gt; Platforming/Jumping&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|2|Crown of Penitence, The}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|crow_of_penitence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9934-fm-crown-of-penitence-by-jesps-17-oct-09/}}&lt;br /&gt;
|2009-10-16&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|3|Chalice of Kings, The}}&amp;lt;br&amp;gt;(v.2.0, 2015/09/24) (Bikerdude and Xarg)&lt;br /&gt;
|Fidcal&lt;br /&gt;
|{{Bloodgate|chalice.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9935-fm-chalice-of-kings-by-fidcal-17-oct-09/}} {{Loot|FM:TDM_Chalice_of_Kings_-_Fidcal}}&lt;br /&gt;
|2009-10-15&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|1|Outpost, The}}&lt;br /&gt;
|angua, greebo&lt;br /&gt;
|{{Bloodgate|outpost.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9937-fm-the-outpost-by-angua-greebo-17-oct-09/}}&lt;br /&gt;
|2008-12-23&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|15|Mission 2: Tears of Saint Lucia, The}}&amp;lt;br&amp;gt;(v.3.0, 2017/02/14)&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|saintlucia.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10579-fan-mission-the-tears-of-st-lucia-20081021/page__view__findpost__p__207972}} {{Loot|FM:TDM_The_Tears_of_Saint_Lucia_-_jdude}} [https://www.youtube.com/watch?v=yrGxoi3LSGg Briefing]&lt;br /&gt;
|2008-10-21&lt;br /&gt;
|20.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|57|Closemouthed Shadows}}&amp;lt;br&amp;gt;(v.2.0, 2012/01/15)&lt;br /&gt;
|LordSavage, Bikerdude&lt;br /&gt;
|{{Bloodgate|closemouthed_shadows.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/13383-fan-mission-closemouthed-shadows-2008-reworked-for-tdm-107-20120115/}} &lt;br /&gt;
|2008-09-21&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|Closemouthed Shadows 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|24|Thief&#039;s Den}}&amp;lt;br&amp;gt;(v.2.0, 2010/07/04)&lt;br /&gt;
|Fidcal, greebo&lt;br /&gt;
|{{Bloodgate|thiefs_den.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11347-fan-mission-thiefs-den-re-release-by-fidcal20100704}} {{Walkthrough|FM:TDM_Thief&#039;s_Den_-_Fidcal}} {{Loot|FM:TDM_Thief%27s_Den_-_Fidcal}}&lt;br /&gt;
|2008-01-18&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To see a speculative list of Upcoming Fan Missions, please visit: [[Upcoming Fan Missions]]&lt;br /&gt;
&lt;br /&gt;
== Table notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links Key&#039;&#039;&#039;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|[http://wik.thedarkmod.com/images/b/be/Icon_forum.png http://wiki.thedarkmod.com/images/b/be/Icon_forum.png]&lt;br /&gt;
|Link to discussion in Forums&lt;br /&gt;
|-&lt;br /&gt;
|{{Mirrorlink|}}&lt;br /&gt;
|Misc. download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Bloodgate|}}&lt;br /&gt;
|Bloodgate download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Loot|}}&lt;br /&gt;
|Loot list&lt;br /&gt;
|-&lt;br /&gt;
|{{Walkthrough|}}&lt;br /&gt;
|Walkthrough&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mission Type Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bear in mind that individual FMs can have combinations of two or three of these overarching genres/themes, rather than just a single one.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Bank Jobs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside a local banking institution. Will often contain the outsmarting of security systems, gaining access to a safe and cracking its code.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Castle/Fortress&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside or outside a castle or fortress, either one that serves as a military garrison, or as someone&#039;s private residence. Frequently involves background characters from the nobility. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;City Missions&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission that is set mainly in the streets and public spaces of an urban area, such as a town or city. Though the player is most often out on the streets, these missions tend to also involve some degree of exploration and infiltration into private and public buildings alike.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Church/Cathedral&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in and around religious buildings and institutions, such as churches, monasteries, cathedrals, church bureaus, church workshops, etc. Frequently involves [[Clergy/Builder_Characters|ecclesiastical characters]] from the TDM setting&#039;s [[Builders|Builder Church]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Experimental&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves some creative design or gameplay element that isn&#039;t typical for the vast majority of TDM missions. FMs set in highly unusual environments, or with a puzzle-like nature, can fit under this label.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Inn/Tavern&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set mostly in and around an inn, tavern or shanty. Usually focused on robbing some rich guest, acquiring an item stored by the guest at the inn, or gathering intel at the inn.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Jail/Prison&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving an escape from a prison (by the imprisoned player character), infiltration of a prison to gather intel from inmates or help an inmate escape the prison, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Lost Civilizations&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focused on the exploration of ancient ruins, whether above ground or in deep subterranean caverns. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Horror&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission with an overt horror theme. Depending on the author&#039;s approach and intentions, it can focus on psychological horror, or horror based on danger from supernatural threats, or varying combinations of both. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Mansion/Estate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside someone&#039;s private residence (a fancy house, a manor house) and its surrounding grounds. Frequently involves background characters from the nobility or the more affluent townsmen or citizens. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Museum Heists&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on a heist in a museum, art gallery or other institution storing priceless artefacts, artworks, gemstone collections, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Caves&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, but involving the exploration of natural caves and caverns.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Daylight&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly outdoor environment, during the daytime (in contrast to the usual TDM missions, set at night time or early dusk).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Pagan&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, involving some presence of [[Pagans|pagan tribes]] from TDM&#039;s setting. Perhaps even pagan camps and settlements.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Pirate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the presence of characters engaging in piracy or smuggling, and various related piratical themes. Can overlap with the &#039;&#039;Ship&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Platforming/Jumping&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on testing the player&#039;s movement, jumping and climbing skills, with or without equipment. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Sewers&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves the use of the city sewers or others sewers in some way, often as a stealthy means of entry or escape.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Ship&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place aboard a vessel, in port or at sea, or otherwise involves ships to a great degree. Can overlap with the &#039;&#039;Pirate&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Thieves&#039; Highway / Rooftop&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a lot of movement and travel on the rooftops of a town or city (colloquially &amp;quot;The Thieves&#039; Highway&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the exploration of old tombs, catacombs and crypts, often for the purposes of treasure and artefact hunting. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Lost Civilizations&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Training&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission label that is unique to the official Training Mission, an open-ended tutorial mission where players can practice and test their TDM gameplay skills at their own leisure, and to the smaller blackjacking-trainer FM, which focuses on practicing NPC knockouts by the player.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Warehouse&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place in and around a warehouse, usually in some industrial area of a city, or at a port. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contest Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GCC 09: [[Fan_Mission_Contests#2009 Grand Christmas Contest|Grand Christmas Contest 2009]]&lt;br /&gt;
&lt;br /&gt;
SVC 10: [[Fan_Mission_Contests#2010 Summer Vertical Contest|Summer Vertical Contest 2010]]&lt;br /&gt;
&lt;br /&gt;
CSC 11: [[Fan_Mission_Contests#2011 Community Seasons Contest|Community Seasons Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
HSC 11: [[Fan_Mission_Contests#2011 Halloween Speed-build Contest|Halloween Speed-Build Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
CBC 12: [[Fan_Mission_Contests#2012 Community Beginner Contest|Community Beginner Contest 2012]]&lt;br /&gt;
&lt;br /&gt;
CUC 13: [[Fan_Mission_Contests#2013 Community Unusual Contest|Community Unusual Contest 2013]]&lt;br /&gt;
&lt;br /&gt;
HSC 14: [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|Halloween Speed-Build Contest 2014]]&lt;br /&gt;
&lt;br /&gt;
HSC 15: [[Fan_Mission_Contests#2015 Halloween Speed-build Contest|Halloween Speed-Build Contest 2015]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Editing this table ==&lt;br /&gt;
* Please only include playable missions that are fully released, not those currently in development or testing.  Tutorials, demos, prefabs, etc. should be listed elsewhere. &lt;br /&gt;
* A mission title may be listed in plain text as a record of release, or preferably a link to an information page or primary direct download.&lt;br /&gt;
* List by release date descending (newest at the top).&lt;br /&gt;
* If a fan mission only has a single mirror/host please consider adding additional mirrors.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Fan Mission Series]] - An overview of all currently known series or campaigns of fan missions interconnected by their stories or characters. There are already plenty in TDM, and have been since its early days as an expandable game.&lt;br /&gt;
* [[Mission recommendation discussions]] - An overview of past discussions on what FMs the community recommends to players looking for various challenges (difficulty, size, theme, setting, objectives, etc.).&lt;br /&gt;
* [[Fan Mission Contests]] - An overview of past and present contests in Fan Mission creation, by members of the TDM community.&lt;br /&gt;
* [[Upcoming Fan Missions]] - An overview of Fan Missions in development or tentatively planned. (&#039;&#039;Do not&#039;&#039; edit the overview.)&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;br /&gt;
[[Category:Official FMs| ]]&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=25493</id>
		<title>Fan Missions for The Dark Mod</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Fan_Missions_for_The_Dark_Mod&amp;diff=25493"/>
		<updated>2019-09-03T18:22:08Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: From memory, there&amp;#039;s a zombie in a glass tank, so I included the undead tag even though it can&amp;#039;t reach the player.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{infobox|&amp;lt;center&amp;gt;&#039;&#039;&#039;Big Ugly Disclaimer:&#039;&#039;&#039;&amp;lt;/center&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;The Dark Mod&#039;&#039;&#039; team does not necessarily support or endorse content listed here, and only hosts missions listed on the [http://www.thedarkmod.com/ official TDM website]. This is a community maintained list, and an ongoing work in progress.  Most of the mirror links in this list are dead or are for missions that are not 2.0 compliant. Mission entries which are suspected to violate copyright must be text-only, and cannot contain links.  Report and/or remove links found in violation of this rule.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* For details about editing this table, see [[#Editing_this_table|below]].&lt;br /&gt;
* For details about how to install Fan Missions please visit: [[Installing and Running Fan Missions]]&lt;br /&gt;
* To sort by a different criterion, click the [[Image:Sort none.gif]] icon in the relevant column header.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2 width=100%&lt;br /&gt;
|-&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;21%&amp;quot;|Fan Mission Title&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;11%&amp;quot;|Author(s)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;4%&amp;quot; class=&amp;quot;unsortable&amp;quot;|Links&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|First Release&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;2%&amp;quot;|Size (MB)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;3%&amp;quot;|EFX Reverb&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Series&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;13%&amp;quot;|Mission Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;6%&amp;quot;|Spiders and Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--INSERT NEW MISSIONS BELOW THIS LINE--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|138|Hidden Hands: Vitalic Fever}}&lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/20051-hidden-hands-vitalic-fever-20072019}}&lt;br /&gt;
|2019-07-20&lt;br /&gt;
|269&lt;br /&gt;
|Yes&lt;br /&gt;
|Hidden Hands 2&lt;br /&gt;
|City Missions&lt;br /&gt;
|Spiders, undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|137|Chronicles of Skulduggery 2: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19975-fan-mission-chronicles-of-skulduggery-2-a-precarious-position-20190504/}}&lt;br /&gt;
|2019-05-04&lt;br /&gt;
|14.5&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Chronicles_of_Skulduggery_series|Chronicles of Skulduggery]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|136|William Steele 5: Commerce Bank}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19957-fan-mission-commerce-bank-by-grayman-2019410/}}&lt;br /&gt;
|2019-04-10&lt;br /&gt;
|30&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|135|Marsh of Rahena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19951-fan-mission-marsh-of-rahena-by-erh-201945}}&lt;br /&gt;
|2019-04-05&lt;br /&gt;
|60.3&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress, Horror &lt;br /&gt;
|Undead, Spiders, Horror Themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|134|Shadows of Northdale ACT 2}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19936-fan-mission-shadows-of-northdale-act-ii-by-goldwell-20190320/}} [https://www.youtube.com/watch?v=KO-eIOX9nqI Briefing]&lt;br /&gt;
|2019-03-20&lt;br /&gt;
|417&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|133|Cleaning Up the Neighbourhood}}&lt;br /&gt;
|some1stoleit and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19898-fan-mission-cleaning-up-the-neighbourhood-by-some1stoleitbikerdude-20190219/}}&lt;br /&gt;
|2019-02-18&lt;br /&gt;
|34.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|132|Hidden Hands: Initiation}}&lt;br /&gt;
|JackFarmer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19796-hidden-hands-initiation-27122018/}}&lt;br /&gt;
|2018-12-27&lt;br /&gt;
|92.5&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt;Ship&lt;br /&gt;
|Spiders, Extra-natural entities&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|131|The Night of Reluctant Benefaction}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19787-fan-mission-the-night-of-reluctant-benefaction/}}&lt;br /&gt;
|2018-12-24&lt;br /&gt;
|11.9&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|130|Mission of Mercy}}&lt;br /&gt;
|joebarnin&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19642-fan-mission-mission-of-mercy-by-joebarnin-20180914/}}&lt;br /&gt;
|2018-09-14&lt;br /&gt;
|10.1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|129|William Steele 4: The Warrens}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19618-fan-mission-the-warrens-by-grayman-201891/}}&lt;br /&gt;
|2018-09-01&lt;br /&gt;
|53&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#William_Steele_series|William Steele]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|128|Braeden Church}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19533-fan-mission-braeden-church-by-grayman-201871/}}&lt;br /&gt;
|2018-07-01&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|127|Chronicles of Skulduggery: Pearls and Swine}}&lt;br /&gt;
|Bienie&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19439-chronicles-of-skulduggery-pearls-and-swine/}}&lt;br /&gt;
|2018-05-25&lt;br /&gt;
|23&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Chronicles_of_Skulduggery_series|Chronicles of Skulduggery]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|126|Shadows of Northdale ACT I}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19368-fan-mission-shadows-of-northdale-act-i-by-goldwell-20180323/}} [https://www.youtube.com/watch?v=p4nP3lYd6wg Briefing]&lt;br /&gt;
|2018-03-23&lt;br /&gt;
|295&lt;br /&gt;
|Custom &amp;lt;br&amp;gt;(not EFX)&lt;br /&gt;
|[[Fan_Mission_Series#Shadows of Northdale series|Shadows of Northdale]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|125|Sir Taffsalot&#039;s Sword}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19361-fan-mission-sir-taffsalots-sword-by-grayman-2018318/}}&lt;br /&gt;
|2018-03-17&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; In memoriam of Gary (Sir Taffsalot) {{Forumlink|http://forums.thedarkmod.com/topic/19306-sad-news-we-lost-one-of-our-own-sir-taffsalot/}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|124|The Arena}}&lt;br /&gt;
|ERH+&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19350-fan-mission-the-arena-by-erh/}}&lt;br /&gt;
|2018-03-12&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Arena Deathmatch &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|123|The Elixir}}&lt;br /&gt;
|Bikerdude and Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19323-fan-mission-the-elixir-by-b1k3rdude-obsttorte-17022018/}} [https://www.youtube.com/watch?v=KfElYZs-FaE Briefing]&lt;br /&gt;
|2018-02-17&lt;br /&gt;
|112&lt;br /&gt;
|Yes&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|122|Volta 2: Cauldron of the Gods}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19207-volta-ii-cauldron-of-the-gods/}} [https://www.youtube.com/watch?v=SRRCRVFHruc Briefing]&lt;br /&gt;
|2017-11-30&lt;br /&gt;
|252&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|121|In the Black}}&lt;br /&gt;
|VanishedOne&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19185-fan-mission-in-the-black/}}&lt;br /&gt;
|2017-11-18&lt;br /&gt;
|103&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|120|Accountant 1: Thieves and Heirs}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19164-fan-mission-the-accountant-1-thieves-and-heirs-by-goldwell-20171108}} [https://www.youtube.com/watch?v=Tk9DtOT4kjc Briefing]&lt;br /&gt;
|2017-11-08&lt;br /&gt;
|247&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|119|King of the Mountain}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/19105-fan-mission-king-of-the-mountain-by-spoonman-18092017/}}&lt;br /&gt;
|2017-09-18&lt;br /&gt;
|8.07&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|118|Briarwood Manor}}&lt;br /&gt;
|NeonStyle&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18980-fan-mission-briarwood-manor-by-neonsstyle-first-mission-2017-07-11}} [https://www.youtube.com/watch?v=BZnSuLVatYM Trailer] [https://www.youtube.com/watch?v=CPlu8fEzyGM Briefing]&lt;br /&gt;
|2017-07-11&lt;br /&gt;
|90&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Spider&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|117|A Matter of Hours}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18809-fan-mission-a-matter-of-hours-by-springheel-2842017/}}&lt;br /&gt;
|2017-04-28&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan Mission Series#Corbin series|Corbin]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|116|The Ravine}}&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18782-fan-mission-the-ravine-by-spoonman-17042017/}}&lt;br /&gt;
|2017-04-17&lt;br /&gt;
|30.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|115|The Bakery Job}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18707-fan-mission-the-bakery-job-by-sotha-20170309/}}&lt;br /&gt;
|2017-03-09&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM||Mission 1: A New Job}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18647-tdm-205-official-introductory-missions/}}&lt;br /&gt;
|2017-03-14&lt;br /&gt;
|13.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|114|Coercion}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18405-fan-mission-coercion-by-sotha-20160927}}&lt;br /&gt;
|2016-09-27&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|113|Down by the Riverside}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18402-fan-mission-down-by-the-riverside-by-dragofer-20160925}}&lt;br /&gt;
|2016-09-25&lt;br /&gt;
|56&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Horror themes, Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|112|Penny Dreadful 3: Erasing the Trail}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18200-fan-mission-penny-dreadful-3-by-melan-and-bikerdude-20160710}}&lt;br /&gt;
|2016-07-09&lt;br /&gt;
|200&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|111|Volta 1: Volta and the Stone}}&lt;br /&gt;
|Kingsal&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18087-fan-mission-volta-and-the-stone-by-kingsal-05262016}}&lt;br /&gt;
|2016-05-27&lt;br /&gt;
|102&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Volta series|Volta]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|110|Full Moon Fever}}&amp;lt;br&amp;gt;(v2.0 2018/02/21)&lt;br /&gt;
|Spoonman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18066-fan-mission-full-moon-fever-by-spoonman-14052016/}}&lt;br /&gt;
|2016-05-14&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|109|King of Diamonds}}&lt;br /&gt;
|Spooks&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18064-fan-mission-the-king-of-diamonds-by-spooks-20160513}}&lt;br /&gt;
|2016-05-13&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|Occult themes&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|108|Accountant 2: New in Town}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/18054-fan-mission-the-accountant-2-new-in-town-by-goldwell-20160509/}} [https://www.youtube.com/watch?v=xeuIO_GcYjQ Briefing] &amp;lt;br&amp;gt; [https://www.youtube.com/watch?v=w6e_SJ0_JOM Gameplay trailer] &lt;br /&gt;
|2016-05-08&lt;br /&gt;
|358&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#The Accountant series|The Accountant]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|107|The Smiling Cutpurse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17850-fan-mission-the-smiling-cutpurse-by-airship-ballet-20160325/}}&lt;br /&gt;
|2016-03-25&lt;br /&gt;
|87&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|106|Mother Rose}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17653-fan-mission-mother-rose-by-grayman-20160101/#entry385131/}}&lt;br /&gt;
|2016-01-01&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Ghost&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|105|Behind Closed Doors}}&lt;br /&gt;
|Bikerdude and the Crucible Team&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17627-crucible-of-omens-behind-closed-doors-by-bikerdude-the-crucible-team-updated-18122015/}}&lt;br /&gt;
|2015-12-19&lt;br /&gt;
|359&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Crucible of Omens series|Crucible of Omens]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|103|The Rats Triumphant}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17512-fan-mission-the-rats-triumphant-by-melan-20151031/}}&lt;br /&gt;
|2015-10-31&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]] (Winner)&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|104|Dead Drunk}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17511-fan-mission-dead-drunk-by-stumpy-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|97|Thief&#039;s Remorse}}&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17509-fan-mission-thiefs-remorse-by-airship-ballet-20151030/}}&lt;br /&gt;
|2015-10-30&lt;br /&gt;
|42&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|102|Spring Cleaning}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17510-fan-mission-spring-cleaning-by-goldwell-20151030/}} [https://www.youtube.com/watch?v=JzPpmDK9Fxw Briefing] &lt;br /&gt;
|2015-10-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|96|The Golden Skull}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17497-fan-mission-the-golden-skull-by-sotha-20151024/}}&lt;br /&gt;
|2015-10-25&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2015_Halloween_Speed-build_Contest|HSC 15]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|101|A House of Locked Secrets}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17163-fan-mission-a-house-of-locked-secrets-by-gelo-moonbo-fleisher-20150528/}} [https://www.youtube.com/watch?v=f5NuTJEZ8VE Trailer]&lt;br /&gt;
|2015-05-29&lt;br /&gt;
|195&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|Horror themes &amp;lt;br&amp;gt; Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|100|Ulysses 2: Protecting the Flock}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17162-fan-mission-ulysses-2-protecting-the-flock-by-sotha-20150528/}}&lt;br /&gt;
|2015-05-28&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|99|Sir Talbot&#039;s Collateral}}&lt;br /&gt;
|Baal and Bikerdude&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/17093-fan-mission-sir-talbots-collateral-by-baal-bikerdude-15042015/}} [https://www.youtube.com/watch?v=e3rdZfq4Omc Trailer]&lt;br /&gt;
|2015-04-15&lt;br /&gt;
|60&lt;br /&gt;
|Yes&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|98|Vengeance for a Thief Part 3}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16953-the-complete-vengeance-for-a-thief-campaign/}}&lt;br /&gt;
|2015-02-16&lt;br /&gt;
|25&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|95|Lord Edgar&#039;s Bathhouse}}&lt;br /&gt;
|Goldwell&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16828-fan-mission-lord-edgars-bathhouse-by-goldwell-27122014/}} [https://www.youtube.com/watch?v=vYSZY7VzFEo Briefing]&lt;br /&gt;
|2014-12-27&lt;br /&gt;
|71&lt;br /&gt;
|No&lt;br /&gt;
|Lord Edgar&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|94|Quinn Co.}}&amp;lt;br&amp;gt;(Made into a campaign, 2015/02/04)&lt;br /&gt;
|Airship Ballet&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16912-fan-mission-chase-mercantile-by-airship-ballet-20150204/}}&lt;br /&gt;
|2014-11-22&lt;br /&gt;
|111&lt;br /&gt;
|No&lt;br /&gt;
|Quinn Co.&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|93|Exhumed}}&lt;br /&gt;
|Airship Ballet and Kyyrma&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/topic/16658-fan-mission-exhumed-by-kyyrma-and-airship-ballet-20141104/}}&lt;br /&gt;
|2014-11-04&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|92|Briarwood Cathedral}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www64.zippyshare.com/v/25705489/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16644-briarwood-cathedral/}}&lt;br /&gt;
|2014-10-29&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|HSC 14]]&lt;br /&gt;
|Church/Cathedral &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|91|One Step Too Far}}&lt;br /&gt;
|Dragofer&lt;br /&gt;
|{{Mirrorlink|https://www.dropbox.com/s/sfxcap1gfdzf318/onesteptoofar.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16457-fan-mission-one-step-too-far-by-dragofer-20140804/}}&lt;br /&gt;
|2014-08-04&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Of Brambles and Thorns series|Of Brambles and Thorns]]&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|90|Lockner Manor}}&lt;br /&gt;
|buck28&lt;br /&gt;
|{{Mirrorlink|http://www76.zippyshare.com/v/44108372/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16452-new-mission-lockner-manor/}}&lt;br /&gt;
|2014-08-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Master thief Corso series|Corso]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Inn/Tavern&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|89|Ulysses: Genesis}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|http://www4.zippyshare.com/v/67195436/file.html}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16428-fan-mission-ulysses-genesis-by-sotha-20140724/}}&lt;br /&gt;
|2014-07-24&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Ulysses series|Ulysses]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Horror theme?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|88|Penny Dreadful 2: All the way up}}&lt;br /&gt;
|Melan and Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://mega.co.nz/#!EwoXHZYZ!tE_sKon2h4AWtWPNt9QS3FQClwmXdimhfjIMPcpCQ34}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16387-fan-mission-penny-dreadful-2-by-melan-and-bikerdude-2014078/}} [https://www.youtube.com/watch?v=WmPfCfbeWvg Trailer]&lt;br /&gt;
|2014-07-08&lt;br /&gt;
|102&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|87|Poets and Peasants}}&lt;br /&gt;
|Digi&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B1HHvWAgbWGfTkI0SXFubXZucXM}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16373-fan-mission-poets-peasants-by-digi-62914}}&lt;br /&gt;
|2014-06-29&lt;br /&gt;
|1&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|85|A Reputation to Uphold}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Mirrorlink|http://www.mindplaces.com/follow.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16204-fan-mission-a-reputation-to-uphold-by-springheel/}}&lt;br /&gt;
|2014-04-18&lt;br /&gt;
|25.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|86|Breaking Out the Fence}}&lt;br /&gt;
|Kyyrma&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/breakingout.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16091-fan-mission-breaking-out-the-fence-17032014-by-kyyrma/}}&lt;br /&gt;
|2014-03-17&lt;br /&gt;
|11.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|City Missions &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|83|Inn Business}}&amp;lt;br&amp;gt;(v.1.48, 2014/03/08)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTYWVaODRiSExGeGc}} {{Forumlink|1=http://forums.thedarkmod.com/topic/16018-fan-mission-inn-business-by-rjferret-20140303/}}&lt;br /&gt;
|2014-03-03&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Inn/Tavern &amp;lt;br&amp;gt; City Streets&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|82|William Steele 3: Cleighmoor}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/16011-fan-mission-cleighmoor-by-grayman-201431/#entry338349/}}&lt;br /&gt;
|2014-03-01&lt;br /&gt;
|38&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Sewers &amp;lt;br&amp;gt; Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|81|William Steele 2: Home Again}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/15919-fan-mission-home-again-by-grayman-2014212/page__fromsearch__1}}&lt;br /&gt;
|2014-02-12&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|80|The Gatehouse}}&lt;br /&gt;
|Bikerdude Goldchocobo&lt;br /&gt;
|{{Mirrorlink|http://www.southquarter.com/tdm/fms/gatehouse.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15844-fan-mission-the-gatehouse-by-bikerdude-goldchocobo-20140114/}} [https://www.youtube.com/watch?v=kcIe2Ucojqw Briefing]&lt;br /&gt;
|2014-01-29&lt;br /&gt;
|100&lt;br /&gt;
|No&lt;br /&gt;
|Remake of Evilartist&#039;s Doom 3 mod&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|79|Window of Opportunity}}&amp;lt;br&amp;gt;(v.1.43, 2014/01/01)&lt;br /&gt;
|RJFerret&lt;br /&gt;
|{{Mirrorlink|https://drive.google.com/file/d/0B81T2ZXLPqhTWTMzQXZtMVFBSG8}} {{Forumlink|1=http://forums.thedarkmod.com/topic/15727-fan-mission-window-of-opportunity-by-rjferret-20140101/}}&lt;br /&gt;
|2014-01-01&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|Spiders (not in short mode)&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|78|In A Time Of Need}}&lt;br /&gt;
|kyyrma&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/a97or40t1xrybh3/timeofneed_v1.zip}} {{Forumlink|http://forums.thedarkmod.com/topic/15354-fan-mission-in-a-time-of-need-by-kyyrma-20131112/}}&lt;br /&gt;
|2013-11-12&lt;br /&gt;
|5.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#In A Time of Need series|In A Time of Need]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|76|Requiem}}&lt;br /&gt;
|Moonbo&lt;br /&gt;
| {{Mirrorlink|http://www.mediafire.com/download/l6o3vvj9y78hu89/requiem.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15101-fan-mission-requiem-by-gelo-moonbo-fleisher-2013106/}}&lt;br /&gt;
|2013-10-08&lt;br /&gt;
|107.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Shadowcursed series|Shadowcursed]]&lt;br /&gt;
|Lost Civilizations &amp;lt;br&amp;gt; Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|75|Vengeance for a Thief Part 2}}&lt;br /&gt;
|Sir Taffsalot&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/vfat2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15051-fan-mission-vengeance-for-a-thief-part-2-by-sir-taffsalot-06092013/}}&lt;br /&gt;
|2013-09-06&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Museum Heists&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|74|Lords and Legacy}}&lt;br /&gt;
|Kvorning&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lordsnlegacy.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/15016-fan-mission-lords-legacy-by-kvorning-20130830/}}&lt;br /&gt;
|2013-08-30&lt;br /&gt;
|45&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|72|Not An Ordinary Guest}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
| {{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/naog.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14965-fan-mission-not-an-ordinary-guest-by-fieldmedic-20130801/}}&lt;br /&gt;
|2013-08-01&lt;br /&gt;
|79.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|71|Penny Dreadful: Grail of Regrets}}&lt;br /&gt;
|Melan&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14952-fan-mission-penny-dreadful-by-melan-20130728/}}&lt;br /&gt;
|2013-07-27&lt;br /&gt;
|74&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Penny Dreadful series|Penny Dreadful]]&lt;br /&gt;
|Horror &lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|70|Solar Escape 1}}&lt;br /&gt;
|Tr00pertj&lt;br /&gt;
| {{Forumlink|http://forums.thedarkmod.com/topic/14944-fan-mission-solar-escape-1/}}&lt;br /&gt;
|2013-07-22&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Sewers&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|69|The Lich Queen&#039;s Demise}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/lich_queens_demise.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14826-fan-mission-the-lich-queens-demise-by-sotha-20130520/unread/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|97.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]] (Winner)&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|77|Old Habits Rebuild}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download/u2gwucibh17c45a/oldhabits.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14827-fan-mission-old-habits-rebuild-by-obsttorte-20052013/}}&lt;br /&gt;
|2013-05-20&lt;br /&gt;
|28.6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|68|The Builder&#039;s Blocks}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Mirrorlink|https://dl.dropboxusercontent.com/u/17706561/builders_blocks.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14592-unusual-gameplay-contest-fm-the-builders-blocks-by-jesps/}}&lt;br /&gt;
|2013-03-18&lt;br /&gt;
|2.85&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2013 Community Unusual Contest|CUC 13]]&lt;br /&gt;
|Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|67|Crystal Grave}} &amp;lt;br&amp;gt;(v.2.0, 2013/02/09)&lt;br /&gt;
|ERH+ Bikerdude&lt;br /&gt;
|{{Mirrorlink|https://dl.dropbox.com/u/17706561/crystalgravev2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14510-fan-mission-crystal-grave-v2-by-erh-and-bikerdude-20130209/unread/}}&lt;br /&gt;
|2011-11-15&lt;br /&gt;
|12.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|66|The Builder Roads}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Forumlink|http://forums.thedarkmod.com/topic/14449-fan-mission-the-builder-roads-by-obsttorte-20130119/}}&lt;br /&gt;
|2013-01-19&lt;br /&gt;
|?&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|65|William Steele 1: In the North}}&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|ws1_north.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14214-fan-mission-in-the-north-by-grayman-20121020/}}&lt;br /&gt;
|2012-10-20&lt;br /&gt;
|39.8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#William Steele series|William Steele]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|64|Old Habits}}&lt;br /&gt;
|Obsttorte&lt;br /&gt;
|{{Bloodgate|mc.pk4}} {{Mirrorlink|http://www.mediafire.com/download.php?andes2xnsonssfj}} {{Forumlink|http://forums.thedarkmod.com/topic/14206-fan-mission-old-habits-by-obsttorte-20121019/}}&lt;br /&gt;
|2012-10-19&lt;br /&gt;
|12.8&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|63|Deceptive Shadows}}&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|DeceptiveShadows.pk4}} {{Mirrorlink|http://www.sendspace.com/file/jzr9s7}} {{Forumlink|http://forums.thedarkmod.com/topic/14103-fan-mission-deceptive-shadows-by-shadowhide-16sep12/}}&lt;br /&gt;
|2012-09-16&lt;br /&gt;
|22.4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|62|Vengeance for a Thief: Part 1}}&lt;br /&gt;
|Sir Taffsalot &lt;br /&gt;
|{{Bloodgate|VFAT1.pk4}} {{Mirrorlink|https://dl.dropbox.com/u/17706561/VFAT1.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/14068-fan-mission-vengeance-for-a-thief-part-1-by-sir-taffsalot-06092012/}}&lt;br /&gt;
|2012-09-06&lt;br /&gt;
|20.9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Vengeance for a Thief series|VFAT]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|61|The Phrase Book}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|phrase_book.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/phrase_book.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13799-fan-mission-the-phrase-book-by-sotha-20120512/}}&lt;br /&gt;
|2012-05-11&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|60|In Remembrance of Him}}&lt;br /&gt;
|RPGista&lt;br /&gt;
|{{Bloodgate|remembrance.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/remembrance.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13749-fan-mission-in-remembrance-of-him-by-rpgista/}}&lt;br /&gt;
|2012-04-22&lt;br /&gt;
|27.6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|59|Rightful Property}}&lt;br /&gt;
|jysk&lt;br /&gt;
|{{Bloodgate|rightful.pk4}} {{Mirrorlink|http://dl.dropbox.com/u/17706561/rightful1.1b.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13711-fan-mission-rightful-property-by-jysk-20120413/}}&lt;br /&gt;
|2012-04-12&lt;br /&gt;
|22.5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|Bank Jobs&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|58|Sneak and Destroy}}&lt;br /&gt;
|SeriousToni&lt;br /&gt;
|{{Bloodgate|kneipe24.pk4}} {{Mirrorlink|http://minus.com/mVcf61n3G/1f}} {{Forumlink|http://forums.thedarkmod.com/topic/13706-fan-mission-sneak-destroy-by-serioustoni-beginners-contest-2012/}}&lt;br /&gt;
|2012-04-11&lt;br /&gt;
|158&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2012_Community_Beginner_Contest|CBC 12]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|56|House of Theo}}&lt;br /&gt;
|Theothesnopp&lt;br /&gt;
|{{Bloodgate|houseoftheo.pk4}} {{Mirrorlink|http://www.gamefront.com/files/21053391/houseoftheo__2__2.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13242-fan-mission-house-of-theo/}}&lt;br /&gt;
|2011-12-04&lt;br /&gt;
|6.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|53|Dragon&#039;s Claw}}&lt;br /&gt;
|Bikerdude, Flanders (map assets)&lt;br /&gt;
|{{Bloodgate|claw.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20948800/claw.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13181-fan-missiondragons-claw-by-b1k3rdude-31102011/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|98&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|52|A Night to Remember}}&amp;lt;br&amp;gt;(v2.0, 2018/05/28)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|antr.pk4}} New &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/19452-a-night-to-remember/}} &amp;lt;br&amp;gt;Old &amp;amp;rarr; {{Forumlink|http://forums.thedarkmod.com/topic/13177-fan-mission-a-night-to-remember-by-fieldmedic-20111030/}}&lt;br /&gt;
|2011-10-31&lt;br /&gt;
|33&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Mansion/Estate &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|51|The Creeps}}&lt;br /&gt;
|Mortem Desino&lt;br /&gt;
|{{Bloodgate|thecreeps.pk4}}{{Mirrorlink|http://www.gamefront.com/files/20939925/thecreeps.pk4}} {{Forumlink|http://forums.thedarkmod.com/topic/13176-fan-mission-creeps-the-20111030-by-mortem-desino/}}&lt;br /&gt;
|2011-10-30&lt;br /&gt;
|61&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Ghosts&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|50|House in Blackbog Hollow}}&lt;br /&gt;
|Stumpy&lt;br /&gt;
|{{Bloodgate|blackbog.pk4}}{{Mirrorlink|http://www.bookofages.co.uk/doom3/mods/blackbog.html}} {{Forumlink|http://forums.thedarkmod.com/topic/13172-fan-mission-house-in-blackbog-hollow-by-stumpy-20111028/}}&lt;br /&gt;
|2011-10-28&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|49|Let Sleeping Thieves Lie}}&lt;br /&gt;
|Sir Taffsalot, Bikerdude&lt;br /&gt;
|{{Bloodgate|lstl.pk4}}{{Mirrorlink|http://www.mediafire.com/?zkd1jn4lpwgioh9}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13153-let-sleeping-thieves-lie-by-sir-taffsalot-bikerdude-20102011/}}&lt;br /&gt;
|2011-10-20&lt;br /&gt;
|13&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|48|Samhain Night}}&lt;br /&gt;
|PranQster&lt;br /&gt;
|{{Bloodgate|samhain.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/samhain.zip}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/13127-fan-mission-samhain-night-on-bone-hill-by-pranqster-20111009/}}&lt;br /&gt;
|2011-10-09&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Halloween_Speed-build_Contest|HSC 11]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|47|A Score to Settle}}&lt;br /&gt;
|Springheel&lt;br /&gt;
|{{Bloodgate|score_to_settle.pk4}}{{Mirrorlink|http://www.mediafire.com/?f3o7hm4h4ew7o3l}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12894-fan-mission-%2348-a-score-to-settle-by-springheel-20110701/}}&lt;br /&gt;
|2011-07-01&lt;br /&gt;
|135&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|46|Siege Shop}}&amp;lt;br&amp;gt;(v3.0 2013/10/10)&lt;br /&gt;
|PranQster and Lowenz&lt;br /&gt;
|{{Bloodgate|siegeshop.pk4}}{{Mirrorlink|http://jdchoate.mcn.org/games/darkmod/siegeshop.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12874-fan-mission-the-siege-shop-by-pranqster-20110626/}}&lt;br /&gt;
|2011-06-26&lt;br /&gt;
|20.51&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|44|Alberic&#039;s Curse}}&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|alberic.pk4}} {{Mirrorlink|http://www.gamefront.com/files/20459738/alberic.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12850-fan-mission-alberics-curse-by-b1k3rdude-20062011/}}&lt;br /&gt;
|2011-06-20&lt;br /&gt;
|29&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] (Winner) &amp;lt;br&amp;gt; T2 FM homage&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|45|Reap As You Sow}}&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|reap.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12849-fan-mission-reap-as-you-sow-by-fieldmedic-20110619/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|52&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Daylight &amp;lt;br&amp;gt; Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|43|Rake Off}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|rake_off.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12846-fm-rake-off-19-06-2011/}}&lt;br /&gt;
|2011-06-19&lt;br /&gt;
|8&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]] &lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|42|Winter Harvest}}&amp;lt;br&amp;gt;(v2.0 2011/07/24 with Bikerdude)&lt;br /&gt;
|ShadowHide&lt;br /&gt;
|{{Bloodgate|winterharvest.pk4}} {{Forumlink|http://forums.thedarkmod.com/index.php?/topic/12690-seasons-contest-entry-winter-harvest-by-shadowhide/}}&lt;br /&gt;
|2011-05-08&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|Outdoor/Pagan&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|41|Fiasco at Fauchard Street}}&lt;br /&gt;
|Melan&lt;br /&gt;
|{{Bloodgate|fauchard.pk4}} {{Mirrorlink|https://rapidshare.com/files/460141132/fauchard.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12655-fan-mission-fiasco-at-fauchard-street-by-melan-20110501//}}&lt;br /&gt;
|2011-05-01&lt;br /&gt;
|62&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]]&lt;br /&gt;
|Thieves&#039; Highway / Rooftop&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|40|Mandrasola}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|mandrasola.pk4}} {{Mirrorlink|http://www.mediafire.com/?2ox2nbhh796ne71}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12575-fan-mission-mandrasola-by-sotha-20110410/}}&lt;br /&gt;
|2011-04-10&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2011_Community Seasons Contest|CSC 11]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|[http://www.southquarter.com/tdm/fms/yantdm1.1.pk4 Q4 Conversion: Yan&#039;s Test]&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12506-fan-mission-q4-map-conversion-yantdm1-280311/}}&lt;br /&gt;
|2011-03-28&lt;br /&gt;
|28&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|38|The Transaction}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|transaction.pk4}} {{Mirrorlink|http://www.mediafire.com/?ux7mx79wumnvcb6}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12408-fan-mission-the-transaction-by-sotha-20110304/}}&lt;br /&gt;
|2011-03-04&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|13|Return to the City}}&amp;lt;br&amp;gt;(v3.0 2015/01/03)&lt;br /&gt;
|Melan, Bikerdude&lt;br /&gt;
|{{Bloodgate|ReturnToTheCityV2.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10509-fan-mission-return-to-the-city-by-melan-20100110/}} {{Forumlink|1=http://www.ttlg.com/forums/showthread.php?t=130519/}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12390-fan-mission-return-to-the-city-v2-01032011/}}&lt;br /&gt;
|2010-01-10&lt;br /&gt;
|26&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Sir Talbot series|Sir Talbot]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] (Winner) &lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|39|Lockdown}}&lt;br /&gt;
|GameDevGoro Bikerdude Fidcal&lt;br /&gt;
|{{Bloodgate|lockdown1_2_1.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/lockdown1_2_1.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/12064-fm-lockdown-part-1-by-gamedevgoro-and-bikerdude-20101224/}}&lt;br /&gt;
|2010-12-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|Lockdown 1&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|37|Flakebridge Monastery}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|flakebridge.pk4}} {{Mirrorlink|http://www.file-upload.net/download-3024426/flakebridge.pk4.html}} {{Mirrorlink|http://rapidshare.com/files/434997519/flakebridge.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11991-fm-flakebridge-monastery-by-jesps/}}&lt;br /&gt;
|2010-12-05&lt;br /&gt;
|16&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Selis Woderose series|Selis Woderose]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|36|Knighton Manor, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|knighton_manor.pk4}} {{Mirrorlink|http://www.mediafire.com/?xrdts3j4t2qxre2}}  {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11898-fan-mission-the-knighton-manor-by-sotha-20101109/page__view__getnewpost}}&lt;br /&gt;
|2010-11-09&lt;br /&gt;
|21&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|35|St Albans Cathedral}}&amp;lt;br&amp;gt;(v2.0 2014/06/11)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|stac160.pk4}} [[http://www.bloodgate.com/fms/stac142.pk4 Classic]] {{Mirrorlink|http://www.filefront.com/17464439/stac141.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/topic/16343-fan-mission-st-albans-cathedral-v20-11062014/}} {{Loot|FM:TDM_St_Alban&#039;s_Cathedral_-_Bikerdude}}&lt;br /&gt;
|2010-11-01&lt;br /&gt;
|67&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|33|Swing}}&lt;br /&gt;
|Komag&lt;br /&gt;
|{{Bloodgate|swing_v1.2.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11660-vertigo-contest-entry-swing-by-komag-20100825/}} {{Loot|FM:TDM_Swing_-_Komag}}&lt;br /&gt;
|2010-08-25&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Platforming/Jumping &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|32|The Caduceus of St. Alban}}&amp;lt;br&amp;gt;(v.1.5.5 2010/08/26)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{bloodgate|stalban.pk4}} {{Mirrorlink|http://www.filefront.com/17237609/stalban.pk4/}}{{Forumlink|http://forums.thedarkmod.com/topic/11644-the-caduceus-of-st-alban-vertical-fm-contest-entry-aug-8th-2010/}}&lt;br /&gt;
|2010-08-23&lt;br /&gt;
|11.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#St Alban series|St Alban]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|30|Somewhere Above the City}}&amp;lt;br&amp;gt;(v1.1 2010/08/27)&lt;br /&gt;
|grayman&lt;br /&gt;
|{{Bloodgate|somewhere1.1.pk4}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11619-vertical-contest-mission-somewhere-above-the-city-by-grayman-aug-20-2010/}} {{Loot|FM:TDM_Somewhere_Above_the_City_-_grayman}}&lt;br /&gt;
|2010-08-20&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Tombs, Catacombs &amp;amp; Crypts&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|29|Betrayal}}&amp;lt;br&amp;gt;(v.1.1, 2010/09/01)&lt;br /&gt;
|Fieldmedic&lt;br /&gt;
|{{Bloodgate|betrayal.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11605-betrayal-by-fieldmedic-20100817-summer-fm-vertical-contest-entry/}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-08-17&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|31|Rift, The}}&lt;br /&gt;
|Baddcog&lt;br /&gt;
|{{Bloodgate|rift.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11599-vert-contest-mission-the-rift-by-baddcog-aug-15-2010/}}&lt;br /&gt;
|2010-08-15&lt;br /&gt;
|10&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Lost Civilizations&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|34|Illusionist&#039;s Tower}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Bloodgate|holetower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11541-illusionists-tower-by-stumpy-201085-summer-fm-vertical-contest-entry}} {{Forumlink|1=http://www.bookofages.co.uk/doom3/mods/holetower.html}} {{Loot|FM:TDM_Illusionist%27s_Tower_-_stumpy}}&lt;br /&gt;
|2010-08-05&lt;br /&gt;
|9&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Horror &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|28|Mad&#039;s Mountain}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|madmountain.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11510-fan-mission-mads-mountain-by-jesps-20100731}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-07-31&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]]&lt;br /&gt;
|Outdoor/Caves&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|27|Glenham Tower, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|glenham_tower.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11423-fan-mission-the-glenham-tower-by-sotha-20100717}}&lt;br /&gt;
|2010-07-17&lt;br /&gt;
|5&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]] &amp;lt;br&amp;gt; [[Fan_Mission_Contests#2010 Summer Vertical Contest|SVC 10]] (Winner)&lt;br /&gt;
|Castle/Fortress &amp;lt;br&amp;gt; Horror&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|25|Pandora&#039;s Box}}&lt;br /&gt;
|Jesps, Fidcal&lt;br /&gt;
|{{Bloodgate|pandoras_box.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11381-fan-mission-pandoras-box-by-jesps20100711}} {{Loot|FM:TDM_Pandora%27s_Box_-_Jesps}}&lt;br /&gt;
|2010-07-11&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Pirate &amp;lt;br&amp;gt; Ship &amp;lt;br&amp;gt; Experimental&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|23|Beleaguered Fence, The}}&lt;br /&gt;
|Sotha&lt;br /&gt;
|{{Bloodgate|beleaguered_fence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11298-fan-mission-the-beleaguered-fence-by-sotha-20100623}} {{Loot|FM:TDM_The_Beleaguered_Fence_-_Sotha}}&lt;br /&gt;
|2010-06-23&lt;br /&gt;
|11&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thomas Porter series|Thomas Porter]]&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|22|Special Delivery, A}}&lt;br /&gt;
|Silencium18&lt;br /&gt;
|{{Bloodgate|delivery.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11247-fan-mission-a-special-delivery-by-silencium1820100612}} {{Loot|FM:TDM_A_Special_Delivery_-_Silencium18}}&lt;br /&gt;
|2010-06-12&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|21|Alchemist, The}}&amp;lt;br&amp;gt;(2010/06/04)&lt;br /&gt;
|Sotha, Fidcal&lt;br /&gt;
|{{Bloodgate|alchemist.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11170-fan-mission-the-alchemist-by-sotha-fidcal20100601}} {{Loot|FM:TDM_The_Alchemist_-_Sotha_%26_Fidcal}}&lt;br /&gt;
|2010-06-01&lt;br /&gt;
|27&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Undead&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|20|Awaiting The Storm}}&lt;br /&gt;
|HappyCheeze&lt;br /&gt;
|{{Bloodgate|storm.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11095-fm-awaiting-the-storm-by-happycheeze-20200522}} {{Loot|FM:TDM_Awaiting_the_Storm_-_HappyCheeze}}&lt;br /&gt;
|2010-05-22&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|19|Sound Alert &amp;amp; Blackjack Trainer}}&lt;br /&gt;
|Dark Mod Team&lt;br /&gt;
| &lt;br /&gt;
|2010-05-14&lt;br /&gt;
|0.2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Training &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|18|No Honor Among Thieves}}&amp;lt;br&amp;gt;(v.3.0, 2015/05/30)&lt;br /&gt;
|Goldchocobo, RailGun, Mortem Desino, Bikerdude&lt;br /&gt;
|{{Mirrorlink|http://tinyurl.com/2a9mdcs}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10993-fan-mission-no-honor-among-thieves-20100429}} {{Loot|FM:TDM_No_Honor_Among_Thieves_-_Goldchocobo}}&lt;br /&gt;
|2010-04-29&lt;br /&gt;
|203&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Church/Cathedral; City Missions; Outdoor/Pagan, Mansion/Estate&lt;br /&gt;
|Undead and Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|17|Heart of Lone Salvation, The}}&amp;lt;br&amp;gt;(v.2.0, 2014/04/12)&lt;br /&gt;
|Fidcal, Baddcog, Bikerdude&lt;br /&gt;
|{{Bloodgate|heart.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/10878-fan-mission-the-heart-of-lone-salvation-by-fidcal-baddcog-bikerdude-20100402/?p=213506}} {{Walkthrough|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}} {{loot|FM:TDM_The_Heart_of_Lone_Salvation_-_Fidcal_%26_Baddcog_%26_Bikerdude}}&lt;br /&gt;
|2010-04-02&lt;br /&gt;
|41&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|73|Lord Dufford&#039;s}}&lt;br /&gt;
|stumpy&lt;br /&gt;
|{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10868-fan-mission-lord-duffords-20100331}} {{Loot|FM:TDM_Lord_Dufford%27s_-_stumpy}}&lt;br /&gt;
|2010-03-31&lt;br /&gt;
|22&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|16|Builder&#039;s Influence, The}}&amp;lt;br&amp;gt;(2010/03/23)&lt;br /&gt;
|Railgun, Springheel&lt;br /&gt;
|{{Bloodgate|builders_influence.pk4}} {{Mirrorlink|http://www.fidcal.com/darkuser/missions/builders_influence.pk4}}{{Forumlink|http://forums.thedarkmod.com/index.php?/topic/10811-fan-mission-the-builders-influence-20100320/}} {{Loot|FM:TDM_The_Builders_Influence_-_Railgun%26Springheel}}&lt;br /&gt;
|2010-03-20&lt;br /&gt;
|15&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Corbin series|Corbin]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|14|Business as Usual}}&amp;lt;br&amp;gt;(v2.0 2011/09/24)&lt;br /&gt;
|Bikerdude&lt;br /&gt;
|{{Bloodgate|business.pk4}}{{Mirrorlink|1=http://rapidshare.com/files/335299431/business.pk4.html}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10533-fan-mission-business-as-usual-by-b1k3rdude-14012010-christmas-fm-contest-entry/page__view__findpost__p__207055}}&lt;br /&gt;
|2010-01-14&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Sewers&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|12|Sons of Baltona 1, The}}&lt;br /&gt;
|Carnage&lt;br /&gt;
|{{Bloodgate|sons_of_baltona_1.pk4}} {{Mirrorlink|1=http://www.mediafire.com/?m4ywobjodm0}}{{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10498-fan-mission-the-sons-of-baltona-1-by-carnage-20100109}}&lt;br /&gt;
|2010-01-09&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]] / Baltona 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|11|Living Expenses}}&lt;br /&gt;
|Sonosuke&lt;br /&gt;
|{{Bloodgate|living_expenses.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10451-fm-living-expenses-by-sonosuke-2-jan-10/page__view__findpost__p__205386}}&lt;br /&gt;
|2010-01-02&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|10|Trapped!}}&lt;br /&gt;
|RailGun&lt;br /&gt;
|{{Bloodgate|trapped.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10442-fm-trapped-by-railgun-dec-30/page__view__findpost__p__205092}}&lt;br /&gt;
|2009-12-30&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Jail/Prison&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|8|Parcel, The}}&lt;br /&gt;
|Xonze&lt;br /&gt;
|{{Bloodgate|parcel.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10404-fm-the-parcel-by-xonze-dec-24/page__view__findpost__p__204459}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|7&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|9|Too Late}}&lt;br /&gt;
|Nielsen74&lt;br /&gt;
|{{Bloodgate|too_late.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10400-fm-too-late-by-nielsen74-24-dec-09/page__view__findpost__p__204396}}&lt;br /&gt;
|2009-12-24&lt;br /&gt;
|4&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Contests#2009 Grand Christmas Contest|GCC 09]]&lt;br /&gt;
|Warehouse&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|7|Thieves}}&lt;br /&gt;
|Silencium, RailGun, Fidcal&lt;br /&gt;
|{{Bloodgate|thieves.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10286-fm-the-thieves-nov-2509/}}&lt;br /&gt;
|2009-11-26&lt;br /&gt;
|9&lt;br /&gt;
|No &amp;lt;br&amp;gt; [https://www.moddb.com/mods/the-dark-mod/addons/unofficial-thieves-efx  Unofficial EFX Build]&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|6|Patently Dangerous}}&amp;lt;br&amp;gt;(v.2.0, 2013/10/08)&lt;br /&gt;
|demagogue&lt;br /&gt;
|{{Bloodgate|patently_dangerous.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10125-fm-patently-dangerous-oct3109/page__view__findpost__p__199324/}}&lt;br /&gt;
|2009-10-31&lt;br /&gt;
|24&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|5|Dark Mod Training Mission, The}}&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|training_mission.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9932-fm-training-mission-17-oct-09/}}&lt;br /&gt;
|2009-10-17&lt;br /&gt;
|6&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Training &amp;lt;br&amp;gt; Platforming/Jumping&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|2|Crown of Penitence, The}}&lt;br /&gt;
|Jesps&lt;br /&gt;
|{{Bloodgate|crow_of_penitence.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9934-fm-crown-of-penitence-by-jesps-17-oct-09/}}&lt;br /&gt;
|2009-10-16&lt;br /&gt;
|12&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|3|Chalice of Kings, The}}&amp;lt;br&amp;gt;(v.2.0, 2015/09/24) (Bikerdude and Xarg)&lt;br /&gt;
|Fidcal&lt;br /&gt;
|{{Bloodgate|chalice.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9935-fm-chalice-of-kings-by-fidcal-17-oct-09/}} {{Loot|FM:TDM_Chalice_of_Kings_-_Fidcal}}&lt;br /&gt;
|2009-10-15&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|1|Outpost, The}}&lt;br /&gt;
|angua, greebo&lt;br /&gt;
|{{Bloodgate|outpost.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/9937-fm-the-outpost-by-angua-greebo-17-oct-09/}}&lt;br /&gt;
|2008-12-23&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|&lt;br /&gt;
|Castle/Fortress&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|15|Mission 2: Tears of Saint Lucia, The}}&amp;lt;br&amp;gt;(v.3.0, 2017/02/14)&lt;br /&gt;
|TDM Team&lt;br /&gt;
|{{Bloodgate|saintlucia.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/10579-fan-mission-the-tears-of-st-lucia-20081021/page__view__findpost__p__207972}} {{Loot|FM:TDM_The_Tears_of_Saint_Lucia_-_jdude}} [https://www.youtube.com/watch?v=yrGxoi3LSGg Briefing]&lt;br /&gt;
|2008-10-21&lt;br /&gt;
|20.3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Introduction_campaign|Official Campaign]]&lt;br /&gt;
|Church/Cathedral&lt;br /&gt;
|Spiders&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|57|Closemouthed Shadows}}&amp;lt;br&amp;gt;(v.2.0, 2012/01/15)&lt;br /&gt;
|LordSavage, Bikerdude&lt;br /&gt;
|{{Bloodgate|closemouthed_shadows.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/topic/13383-fan-mission-closemouthed-shadows-2008-reworked-for-tdm-107-20120115/}} &lt;br /&gt;
|2008-09-21&lt;br /&gt;
|2&lt;br /&gt;
|No&lt;br /&gt;
|Closemouthed Shadows 1&lt;br /&gt;
|Mansion/Estate&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!align=left|{{TDM-FM|24|Thief&#039;s Den}}&amp;lt;br&amp;gt;(v.2.0, 2010/07/04)&lt;br /&gt;
|Fidcal, greebo&lt;br /&gt;
|{{Bloodgate|thiefs_den.pk4}} {{Forumlink|1=http://forums.thedarkmod.com/index.php?/topic/11347-fan-mission-thiefs-den-re-release-by-fidcal20100704}} {{Walkthrough|FM:TDM_Thief&#039;s_Den_-_Fidcal}} {{Loot|FM:TDM_Thief%27s_Den_-_Fidcal}}&lt;br /&gt;
|2008-01-18&lt;br /&gt;
|3&lt;br /&gt;
|No&lt;br /&gt;
|[[Fan_Mission_Series#Thief&#039;s Den series|Thief&#039;s Den]]&lt;br /&gt;
|City Missions&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To see a speculative list of Upcoming Fan Missions, please visit: [[Upcoming Fan Missions]]&lt;br /&gt;
&lt;br /&gt;
== Table notes ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links Key&#039;&#039;&#039;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|[http://wik.thedarkmod.com/images/b/be/Icon_forum.png http://wiki.thedarkmod.com/images/b/be/Icon_forum.png]&lt;br /&gt;
|Link to discussion in Forums&lt;br /&gt;
|-&lt;br /&gt;
|{{Mirrorlink|}}&lt;br /&gt;
|Misc. download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Bloodgate|}}&lt;br /&gt;
|Bloodgate download mirror&lt;br /&gt;
|-&lt;br /&gt;
|{{Loot|}}&lt;br /&gt;
|Loot list&lt;br /&gt;
|-&lt;br /&gt;
|{{Walkthrough|}}&lt;br /&gt;
|Walkthrough&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mission Type Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bear in mind that individual FMs can have combinations of two or three of these overarching genres/themes, rather than just a single one.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=1 style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=0 cellpadding=2&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Bank Jobs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside a local banking institution. Will often contain the outsmarting of security systems, gaining access to a safe and cracking its code.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Castle/Fortress&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside or outside a castle or fortress, either one that serves as a military garrison, or as someone&#039;s private residence. Frequently involves background characters from the nobility. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;City Missions&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission that is set mainly in the streets and public spaces of an urban area, such as a town or city. Though the player is most often out on the streets, these missions tend to also involve some degree of exploration and infiltration into private and public buildings alike.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Church/Cathedral&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in and around religious buildings and institutions, such as churches, monasteries, cathedrals, church bureaus, church workshops, etc. Frequently involves [[Clergy/Builder_Characters|ecclesiastical characters]] from the TDM setting&#039;s [[Builders|Builder Church]].&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Experimental&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves some creative design or gameplay element that isn&#039;t typical for the vast majority of TDM missions. FMs set in highly unusual environments, or with a puzzle-like nature, can fit under this label.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Inn/Tavern&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set mostly in and around an inn, tavern or shanty. Usually focused on robbing some rich guest, acquiring an item stored by the guest at the inn, or gathering intel at the inn.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Jail/Prison&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving an escape from a prison (by the imprisoned player character), infiltration of a prison to gather intel from inmates or help an inmate escape the prison, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Lost Civilizations&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focused on the exploration of ancient ruins, whether above ground or in deep subterranean caverns. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Horror&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission with an overt horror theme. Depending on the author&#039;s approach and intentions, it can focus on psychological horror, or horror based on danger from supernatural threats, or varying combinations of both. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Mansion/Estate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a heist or other thievy action inside someone&#039;s private residence (a fancy house, a manor house) and its surrounding grounds. Frequently involves background characters from the nobility or the more affluent townsmen or citizens. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Museum Heists&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on a heist in a museum, art gallery or other institution storing priceless artefacts, artworks, gemstone collections, etc.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Caves&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, but involving the exploration of natural caves and caverns.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Daylight&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly outdoor environment, during the daytime (in contrast to the usual TDM missions, set at night time or early dusk).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Outdoor/Pagan&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission set in a mostly natural outdoor environment, involving some presence of [[Pagans|pagan tribes]] from TDM&#039;s setting. Perhaps even pagan camps and settlements.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Pirate&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the presence of characters engaging in piracy or smuggling, and various related piratical themes. Can overlap with the &#039;&#039;Ship&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Platforming/Jumping&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission focusing on testing the player&#039;s movement, jumping and climbing skills, with or without equipment. &lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Sewers&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which involves the use of the city sewers or others sewers in some way, often as a stealthy means of entry or escape.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Ship&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place aboard a vessel, in port or at sea, or otherwise involves ships to a great degree. Can overlap with the &#039;&#039;Pirate&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Thieves&#039; Highway / Rooftop&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving a lot of movement and travel on the rooftops of a town or city (colloquially &amp;quot;The Thieves&#039; Highway&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Tombs, Catacombs &amp;amp; Crypts&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission involving the exploration of old tombs, catacombs and crypts, often for the purposes of treasure and artefact hunting. Can often overlap with the &#039;&#039;Horror&#039;&#039; or &#039;&#039;Lost Civilizations&#039;&#039; type of mission, but not necessarily.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Training&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission label that is unique to the official Training Mission, an open-ended tutorial mission where players can practice and test their TDM gameplay skills at their own leisure, and to the smaller blackjacking-trainer FM, which focuses on practicing NPC knockouts by the player.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;&#039;&#039;Warehouse&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
|Fan mission which takes place in and around a warehouse, usually in some industrial area of a city, or at a port. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contest Key&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GCC 09: [[Fan_Mission_Contests#2009 Grand Christmas Contest|Grand Christmas Contest 2009]]&lt;br /&gt;
&lt;br /&gt;
SVC 10: [[Fan_Mission_Contests#2010 Summer Vertical Contest|Summer Vertical Contest 2010]]&lt;br /&gt;
&lt;br /&gt;
CSC 11: [[Fan_Mission_Contests#2011 Community Seasons Contest|Community Seasons Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
HSC 11: [[Fan_Mission_Contests#2011 Halloween Speed-build Contest|Halloween Speed-Build Contest 2011]]&lt;br /&gt;
&lt;br /&gt;
CBC 12: [[Fan_Mission_Contests#2012 Community Beginner Contest|Community Beginner Contest 2012]]&lt;br /&gt;
&lt;br /&gt;
CUC 13: [[Fan_Mission_Contests#2013 Community Unusual Contest|Community Unusual Contest 2013]]&lt;br /&gt;
&lt;br /&gt;
HSC 14: [[Fan_Mission_Contests#2014 Halloween Speed-build Contest|Halloween Speed-Build Contest 2014]]&lt;br /&gt;
&lt;br /&gt;
HSC 15: [[Fan_Mission_Contests#2015 Halloween Speed-build Contest|Halloween Speed-Build Contest 2015]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Editing this table ==&lt;br /&gt;
* Please only include playable missions that are fully released, not those currently in development or testing.  Tutorials, demos, prefabs, etc. should be listed elsewhere. &lt;br /&gt;
* A mission title may be listed in plain text as a record of release, or preferably a link to an information page or primary direct download.&lt;br /&gt;
* List by release date descending (newest at the top).&lt;br /&gt;
* If a fan mission only has a single mirror/host please consider adding additional mirrors.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Fan Mission Series]] - An overview of all currently known series or campaigns of fan missions interconnected by their stories or characters. There are already plenty in TDM, and have been since its early days as an expandable game.&lt;br /&gt;
* [[Mission recommendation discussions]] - An overview of past discussions on what FMs the community recommends to players looking for various challenges (difficulty, size, theme, setting, objectives, etc.).&lt;br /&gt;
* [[Fan Mission Contests]] - An overview of past and present contests in Fan Mission creation, by members of the TDM community.&lt;br /&gt;
* [[Upcoming Fan Missions]] - An overview of Fan Missions in development or tentatively planned. (&#039;&#039;Do not&#039;&#039; edit the overview.)&lt;br /&gt;
&lt;br /&gt;
{{general|sort=Fan Missions}}&lt;br /&gt;
[[Category:Fan Missions]]&lt;br /&gt;
[[Category:Official FMs| ]]&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25492</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25492"/>
		<updated>2019-09-03T17:46:39Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Misc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Emitted to what?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky.&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` arg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25491</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25491"/>
		<updated>2019-09-03T17:43:28Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Misc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Emitted to what?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky.&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
There seems to be a TDM-specific decl class called tdm_matinfo, intended to appear within .mtr files. &#039;A TDM-specific material information declaration class. Currently, the only info it contains is surfacetype.&#039; Unused?&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` spawnarg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Texture_Sources&amp;diff=25490</id>
		<title>Texture Sources</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Texture_Sources&amp;diff=25490"/>
		<updated>2019-08-31T00:06:02Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of sites where you can download some decent textures.&amp;lt;br /&amp;gt;Note that most textures available these days are procedurally generated and made for PBR materials. TDM uses a non-PBR engine (idtech4), so these textures typically require some work to make them look good in game. See [[Textures]] for more information.&lt;br /&gt;
&lt;br /&gt;
===Free===&lt;br /&gt;
* [http://textures.one/ Textures.one] - search engine for multiple free texture sites.&lt;br /&gt;
* [https://texturehaven.com/textures/ Texture Haven] – 1k to 8k textures, no signup required.&lt;br /&gt;
* [https://cc0textures.com/ CC0 Textures] – 2k to 8k textures and Substance files, no registration required.&lt;br /&gt;
* [https://www.sharetextures.com/ Share Textures] - seamless, CC0, no registration required.&lt;br /&gt;
* [https://www.cgbookcase.com/textures/ cgbookcase.com] - CC0, PBR, no registration required.&lt;br /&gt;
* [https://3dtextures.me/ 3DTextures.me] - CC0, no registration required. Free for basic downloads (Patreon supporters may get higher resolutions + source files).&lt;br /&gt;
* [https://opengameart.org/art-search-advanced?keys=&amp;amp;field_art_type_tid%5B%5D=14&amp;amp;sort_by=count&amp;amp;sort_order=DESC OpenGameArt textures category] - No registration required. CC and/or GPL [https://opengameart.org/content/faq#q-proprietary licences]. Lets you search by licence.&lt;br /&gt;
* [https://hdrihaven.com/hdris/ HDRI Haven] - photographic panoramas for skyboxes, etc. CC0, no registration required. You&#039;ll need to [https://matheowis.github.io/HDRI-to-CubeMap/ convert them to cubemaps].&lt;br /&gt;
* [https://www.rigzsoft.co.uk/portfolio/particle-collection-1/ A collection of royalty-free particle shapes] from the makers of the TimelineFX software.&lt;br /&gt;
&lt;br /&gt;
===Other sources===&lt;br /&gt;
* [https://www.poliigon.com/search?is_free=true Poliigon] – Textures, brushes, models, and HDRI maps, usually for architectural rendering. Only some of those are free. Textures from 1k to 8k. Requires login credentials.&lt;br /&gt;
* [https://quixel.com/megascans/library/free Quixel Megascans] – Textures and models, selected free assets. Signup required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please add to this list.&lt;br /&gt;
&lt;br /&gt;
{{textures}}&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Texture_Sources&amp;diff=25489</id>
		<title>Texture Sources</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Texture_Sources&amp;diff=25489"/>
		<updated>2019-08-29T01:50:14Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of sites where you can download some decent textures.&amp;lt;br /&amp;gt;Note that most textures available these days are procedurally generated and made for PBR materials. TDM uses a non-PBR engine (idtech4), so these textures typically require some work to make them look good in game. See [[Textures]] for more information.&lt;br /&gt;
&lt;br /&gt;
===Free===&lt;br /&gt;
* [http://textures.one/ Textures.one] - search engine for multiple free texture sites.&lt;br /&gt;
* [https://texturehaven.com/textures/ Texture Haven] – 1k to 8k textures, no signup required.&lt;br /&gt;
* [https://cc0textures.com/ CC0 Textures] – 2k to 8k textures and Substance files, no registration required.&lt;br /&gt;
* [https://www.sharetextures.com/ Share Textures] - seamless, CC0, no registration required.&lt;br /&gt;
* [https://www.cgbookcase.com/textures/ cgbookcase.com] - CC0, PBR, no registration required.&lt;br /&gt;
* [https://opengameart.org/art-search-advanced?keys=&amp;amp;field_art_type_tid%5B%5D=14&amp;amp;sort_by=count&amp;amp;sort_order=DESC OpenGameArt textures category] - No registration required. CC and/or GPL [https://opengameart.org/content/faq#q-proprietary licences]. Lets you search by licence.&lt;br /&gt;
* [https://hdrihaven.com/hdris/ HDRI Haven] - photographic panoramas for skyboxes, etc. CC0, no registration required. You&#039;ll need to [https://matheowis.github.io/HDRI-to-CubeMap/ convert them to cubemaps].&lt;br /&gt;
* [https://www.rigzsoft.co.uk/portfolio/particle-collection-1/ A collection of royalty-free particle shapes] from the makers of the TimelineFX software.&lt;br /&gt;
&lt;br /&gt;
===Other sources===&lt;br /&gt;
* [https://www.poliigon.com/search?is_free=true Poliigon] – Textures, brushes, models, and HDRI maps, usually for architectural rendering. Only some of those are free. Textures from 1k to 8k. Requires login credentials.&lt;br /&gt;
* [https://quixel.com/megascans/library/free Quixel Megascans] – Textures and models, selected free assets. Signup required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please add to this list.&lt;br /&gt;
&lt;br /&gt;
{{textures}}&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25488</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25488"/>
		<updated>2019-08-29T01:40:54Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* ShaderParms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Emitted to what?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky.&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comments on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
  // screen damage blobs&lt;br /&gt;
  //&lt;br /&gt;
  // the alpha paramater (parm3) will decrease from 1.0 to 0.0 over the length of&lt;br /&gt;
  // time on screen&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` spawnarg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25487</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25487"/>
		<updated>2019-08-29T01:37:02Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* ShaderParms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Emitted to what?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky.&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on damage overlays (I&#039;m unsure how much of this is active in TDM, given that D3&#039;s doublevision is disabled):&lt;br /&gt;
&lt;br /&gt;
  // player damage tunnel vision effect&lt;br /&gt;
  //&lt;br /&gt;
  // parm3 will range from 0.0 to 1.0 based on health, 1.0 is full health&lt;br /&gt;
  // parm0 will be the time that damage was last taken, allowing an&lt;br /&gt;
  // accentuation and fade out&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` spawnarg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25486</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25486"/>
		<updated>2019-08-29T01:28:18Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* ShaderParms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Emitted to what?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky.&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
id&#039;s comment on the decalFade table:&lt;br /&gt;
&lt;br /&gt;
  // this will be full intensity for 90% of the time, then fade to 0&lt;br /&gt;
  // parm3 is set to the time the mark is spawned&lt;br /&gt;
  // parm4 is set to the time the mark will be removed&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` spawnarg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25485</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25485"/>
		<updated>2019-08-27T02:53:41Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Misc. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Emitted to what?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky.&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def? A target_air/idTarget_Air turned up in Q4&#039;s defs.&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` spawnarg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Texture_Sources&amp;diff=25484</id>
		<title>Texture Sources</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Texture_Sources&amp;diff=25484"/>
		<updated>2019-08-26T21:48:41Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of sites where you can download some decent textures.&amp;lt;br /&amp;gt;Note that most textures available these days are procedurally generated and made for PBR materials. TDM uses a non-PBR engine (idtech4), so these textures typically require some work to make them look good in game. See [[Textures]] for more information.&lt;br /&gt;
&lt;br /&gt;
===Free===&lt;br /&gt;
* [http://textures.one/ Textures.one] - search engine for multiple free texture sites.&lt;br /&gt;
* [https://texturehaven.com/textures/ Texture Haven] – 1k to 8k textures, no signup required.&lt;br /&gt;
* [https://cc0textures.com/ CC0 Textures] – 2k to 8k textures and Substance files, no registration required.&lt;br /&gt;
* [https://www.sharetextures.com/ Share Textures] - seamless, CC0, no registration required.&lt;br /&gt;
* [https://opengameart.org/art-search-advanced?keys=&amp;amp;field_art_type_tid%5B%5D=14&amp;amp;sort_by=count&amp;amp;sort_order=DESC OpenGameArt textures category] - No registration required. CC and/or GPL [https://opengameart.org/content/faq#q-proprietary licences]. Lets you search by licence.&lt;br /&gt;
* [https://hdrihaven.com/hdris/ HDRI Haven] - photographic panoramas for skyboxes, etc. CC0, no registration required. You&#039;ll need to [https://matheowis.github.io/HDRI-to-CubeMap/ convert them to cubemaps].&lt;br /&gt;
* [https://www.rigzsoft.co.uk/portfolio/particle-collection-1/ A collection of royalty-free particle shapes] from the makers of the TimelineFX software.&lt;br /&gt;
&lt;br /&gt;
===Other sources===&lt;br /&gt;
* [https://www.poliigon.com/search?is_free=true Poliigon] – Textures, brushes, models, and HDRI maps, usually for architectural rendering. Only some of those are free. Textures from 1k to 8k. Requires login credentials.&lt;br /&gt;
* [https://quixel.com/megascans/library/free Quixel Megascans] – Textures and models, selected free assets. Signup required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please add to this list.&lt;br /&gt;
&lt;br /&gt;
{{textures}}&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Texture_Sources&amp;diff=25483</id>
		<title>Texture Sources</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Texture_Sources&amp;diff=25483"/>
		<updated>2019-08-25T18:48:54Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is a list of sites where you can download some decent textures.&amp;lt;br /&amp;gt;Note that most textures available these days are procedurally generated and made for PBR materials. TDM uses a non-PBR engine (idtech4), so these textures typically require some work to make them look good in game. See [[Textures]] for more information.&lt;br /&gt;
&lt;br /&gt;
===Free===&lt;br /&gt;
* [http://textures.one/ Textures.one] - search engine for multiple free texture sites.&lt;br /&gt;
* [https://texturehaven.com/textures/ Texture Haven] – 1k to 8k textures, no signup required.&lt;br /&gt;
* [https://cc0textures.com/ CC0 Textures] – 2k to 8k textures and Substance files, no registration required.&lt;br /&gt;
* [https://www.sharetextures.com/ Share Textures] - seamless, CC0, no registration required.&lt;br /&gt;
* [https://hdrihaven.com/hdris/ HDRI Haven] - photographic panoramas for skyboxes, etc. CC0, no registration required. You&#039;ll need to [https://matheowis.github.io/HDRI-to-CubeMap/ convert them to cubemaps].&lt;br /&gt;
* [https://www.rigzsoft.co.uk/portfolio/particle-collection-1/ A collection of royalty-free particle shapes] from the makers of the TimelineFX software.&lt;br /&gt;
&lt;br /&gt;
===Other sources===&lt;br /&gt;
* [https://www.poliigon.com/search?is_free=true Poliigon] – Textures, brushes, models, and HDRI maps, usually for architectural rendering. Only some of those are free. Textures from 1k to 8k. Requires login credentials.&lt;br /&gt;
* [https://quixel.com/megascans/library/free Quixel Megascans] – Textures and models, selected free assets. Signup required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please add to this list.&lt;br /&gt;
&lt;br /&gt;
{{textures}}&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=Creatures&amp;diff=25482</id>
		<title>Creatures</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=Creatures&amp;diff=25482"/>
		<updated>2019-08-25T14:57:35Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: Horses can move around (though they lack an animation for turning on the spot, so the swivelling looks bad); it&amp;#039;s just that mappers most often have them idling.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox|bg=#ffb0b0|border=2px solid#ff0000|text=&lt;br /&gt;
{{{text|This page features potential &#039;&#039;&#039;SPOILERS&#039;&#039;&#039; about the contents of &#039;&#039;The Dark Mod&#039;&#039; and some of its Fan Missions. &amp;lt;br&amp;gt; Do not proceed further if you like surprises and don&#039;t want to be spoiled.}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The [[Universe|TDM universe]] is a mostly grounded, realistic setting, and its fauna and flora corresponds to what you&#039;d expect from the real world. However, one of the fantasy elements of the setting is the presence of several types of fictional creatures, some of them strange animals and beasts, others outright monsters. Some come in animal forms, some in humanoid ones. In the game itself, they usually appear as AI models, similar to human AI characters.&lt;br /&gt;
&lt;br /&gt;
This article serves as a bit of an overview on the non-human creatures seen in TDM&#039;s history thus far. Some are already fully finished, fully tested, and part of the core mod. Some are merely proposals or are currently in development limbo. Bear in mind that not every undeveloped concept can or needs to be added to TDM.&lt;br /&gt;
&lt;br /&gt;
== Core TDM ==&lt;br /&gt;
&lt;br /&gt;
This section lists examples of natural or supernatural creatures and beings (other than humans) that are currently a part of The Dark Mod, or were planned for inclusion to &#039;&#039;The Dark Mod&#039;&#039; in the past. &lt;br /&gt;
&lt;br /&gt;
=== Creatures used in TDM ===&lt;br /&gt;
&lt;br /&gt;
These are creatures that are currently an official part of &#039;&#039;The Dark Mod&#039;&#039;, in one way or another.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Animals&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Cats&#039;&#039;&#039;&#039;&#039; - only as ambient sounds in certain missions; a possible addition was discussed [http://forums.thedarkmod.com/topic/16811-cats-and-dogs/ here]&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Dogs&#039;&#039;&#039;&#039;&#039; - only as ambient sounds in certain missions; a possible addition was discussed [http://forums.thedarkmod.com/topic/16811-cats-and-dogs/ here]&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Horses&#039;&#039;&#039;&#039;&#039; - Horse AI, usually seen idling in stables; come with several variations of saddlecloths&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Rats&#039;&#039;&#039;&#039;&#039; - small, fully animated AI, can be included in FMs to scurry around, for added atmosphere&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Snails&#039;&#039;&#039;&#039;&#039; - stationary, &amp;quot;set-dressing&amp;quot; models&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Spiders&#039;&#039;&#039;&#039;&#039; - fairly small, greyish spider; harmless compared to their monstrous cousins&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fantasy beasts&#039;&#039;&#039; &lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;[[Giant Spiders]]&#039;&#039;&#039;&#039;&#039; - huge spiders, in several size varieties (some the size of a plate, the biggest ones the size of a large dog)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Undead beings&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;[[Undead|Revenants]]&#039;&#039;&#039;&#039;&#039; - animated corpses of [[Builders]] executed for heresies, haunting crypts and vengeful&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Skeletons&#039;&#039;&#039;&#039;&#039; - aside from more fleshy undead beings, one can occassionally stumble upon walking, roaming, haunted skeletons; they come in several appearance variations and are often armed &lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;[[Undead|Zombies]]&#039;&#039;&#039;&#039;&#039; - walking corpses of the long dead&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elementals&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;[[Fire Elementals]]&#039;&#039;&#039;&#039;&#039; - mysterious elemental creatures in the form of a floating ball of fire; a working version was added to TDM in [http://www.thedarkmod.com/posts/announcing-the-release-of-tdm-2-05/ version 2.05]&lt;br /&gt;
&lt;br /&gt;
=== Undeveloped creatures ===&lt;br /&gt;
&lt;br /&gt;
These are creatures that were contemplated for &#039;&#039;The Dark Mod&#039;&#039;, but shelved due to various reasons. &lt;br /&gt;
&lt;br /&gt;
As with all concepts, don&#039;t expect all of these to be developed into working AI. Some might be eventually added as the game grows and matures, but it&#039;s mostly down to the talent available for creating and testing new AI.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Animals&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Ravens&#039;&#039;&#039;&#039;&#039; - a partially made raven model [http://forums.thedarkmod.com/topic/16811-cats-and-dogs/page-2#entry375619 was mentioned] by Springheel in 2014&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Ridable horses&#039;&#039;&#039;&#039;&#039; - just a very rudimentary, rough-around-the-edges attempt to create the semblance of a ridable horse AI; you can see this almost forgotten idea in this [https://www.youtube.com/watch?v=dilAPQiIxo4 old test footage] (TDM being what it is, the inclusion of ridable horses is &#039;&#039;highly unlikely&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fantasy beasts&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;[[Belchers]]&#039;&#039;&#039;&#039;&#039; - lizard-like or amphibian-like bipedal creatures, dwelling in caves and swamps; [[Concept Art and Fan Art Archive#Creatures|several model concepts]] and some [https://www.youtube.com/watch?v=nb1VyhVJbA0 old test footage], but development is currently in limbo&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;[http://forums.thedarkmod.com/topic/17417-new-monster-model-mantian/ &#039;Mantians&#039;]&#039;&#039;&#039;&#039;&#039; - insectoid humanoids with a praying mantis appearance; an AI concept proposed by Plutonia in 2015&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Strigis&#039;&#039;&#039;&#039;&#039; - no known models or concept art, just a proposed idea; apparently a feminine creature with owl-like features (&#039;&#039;Strix&#039;&#039; being the Latin moniker for forest owls, the &#039;&#039;Strigidae&#039;&#039;; Greek and Roman mythologies have featured the &#039;&#039;[https://en.wikipedia.org/wiki/Strix_(mythology) strix]&#039;&#039; as a bird of ill omen or a feminine, lamia-like being, while &#039;&#039;striga&#039;&#039;-s are also vampire-like female undead or witches in various Slavic folklore)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Spider Queen&#039;&#039;&#039;&#039;&#039; - was worked on for pre-standalone TDM; the model was adapted from Doom 3&#039;s Vagary and so cannot be used in standalone for legal reasons. (Not to be confused with the spider queen in Window of Opportunity.)&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;Werebeasts&#039;&#039;&#039;&#039;&#039; - effectivelly humanoid, bipedal werewolves (or werewolf-like creatures); there is a semi-finished, though highly buggy and not properly working AI model, and some [https://www.youtube.com/watch?v=dilAPQiIxo4 old test footage], but development is currently in limbo&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Undead beings&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;[[Undead|Ghouls]]&#039;&#039;&#039;&#039;&#039; - humanoid undead monsters, haunting long-abandoned city quarters or burial places. A ghoul adapted from a Doom 3 zombie was prototyped before TDM went standalone.&lt;br /&gt;
&lt;br /&gt;
== Unique to FMs ==&lt;br /&gt;
&lt;br /&gt;
This section lists examples of natural or supernatural creatures and beings (other than humans) that are unique to the individual Fan Missions made by individual FM authors. &lt;br /&gt;
&lt;br /&gt;
Some of these tend to be eventually included in the core mod, if they get approved.&lt;br /&gt;
&lt;br /&gt;
Some of the humanoid monsters in the core mod are rather easily derivable into new creatures. Animated skeletons are a good example. Several authors have added additional customised features to these beings in their FMs, such as making their skeletal bodies or parts of their bodies engulfed in creepy flames (e.g. &#039;&#039;The Rift&#039;&#039; by badccog, &#039;&#039;Volta II: Cauldron of the Gods&#039;&#039; by Kingsal).&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;A Night to Remember&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
This fan mission by Fieldmedic features spirits haunting a manor house at night time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spirits&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The ghosts haunting the manor house are relatively slow-moving, but highly dangerous to the player character if he remains in their proximity. As transparent, incorporeal beings, thay are invulnerable to arrows. Every single arrow will go through them, without any effect.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Requiem&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
This fan mission by moonbo features several custom AI adversaries, but the most prominent are a type of armed, shadowy spirits.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Spirits&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
One of the major new enemy AIs in the mission are &amp;quot;shadow spirits&amp;quot;. They patrol like normal guards or the undead revenants, but the main danger posed by them is their partial invisibility. Depending on the lighting conditions of a given area, they can turn effectivelly invisible (or &#039;&#039;barely&#039;&#039; visible), while in others, the outlines of their bodies become more readily apparent. The player character is required to exercise some patience and extra care while traversing spaces that are patrolled by these beings.&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;Volta II: Cauldron of the Gods&#039;&#039; ===&lt;br /&gt;
&lt;br /&gt;
This fan mission by Kingsal features two new creature types, as well as a variation on an established creature. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fantasy beasts&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The first type is a species of beast-like humanoids (beastmen) with yellowy glowing eyes, referred to as &amp;quot;beasts&amp;quot; on the FM&#039;s GUI. They come in two varieties: A beastman armed with a curved short sword, and a beastman armed with the same weapon and a bundle of simple javelins. The latter is a ranged unit, akin to a typical TDM archer, though it uses a throwing weapon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elementals&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
The second type is a will-o&#039;-the-wisp. It slowly flies around a local area, illuminating the spaces below it in the process. It&#039;s a harmless being, it does not take any offensive or defensive action against the player, and is invulnerable. The only danger the little flying wisp poses to the player character is exposing the player&#039;s hiding place with light, especially if the player only relies on shadow cover and doesn&#039;t have some physical cover between him and the enemy AI in the mission.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Undead beings&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
One old abandoned complex appearing in the mission is patrolled by skeletal undead engulfed in flames.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
*[http://forums.thedarkmod.com/topic/14558-monsters/ Monsters] - General older forum discussion on monsters and their use in TDM.&lt;br /&gt;
*[http://forums.thedarkmod.com/topic/16833-mythical-creatures/ Mythical creatures] - General older forum discussion on the more fantastical creatures included or includable in TDM.&lt;br /&gt;
*[http://forums.thedarkmod.com/topic/15132-a-suggestion-vampires-within-the-lore/ A suggestion: Vampires within the Lore] - A creature idea proposed by LordPariah in 2013.&lt;br /&gt;
*[http://forums.thedarkmod.com/topic/18143-any-thoughts-on-adding-a-burrick/ Any thoughts on adding a Belcher ?] - Most recent discussion (2017) on the proposed &amp;quot;Belcher&amp;quot; creatures, with some links to older development discussions about the same topic.&lt;br /&gt;
*[http://forums.thedarkmod.com/topic/14066-needed-for-standalone-animated-werebeast/ Needed for Standalone: Animated Werebeast] - Discussion documenting the gradual development of the werebeast concept&#039;s current iteration for the game.&lt;br /&gt;
*[http://forums.thedarkmod.com/topic/19191-werebeasts-or-beastmen/ Werebeasts or Beastmen?] - Discussion answering a newbie question about these types of creatures.&lt;br /&gt;
&lt;br /&gt;
[[Category:Universe]]&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
	<entry>
		<id>https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25481</id>
		<title>User:VanishedOne</title>
		<link rel="alternate" type="text/html" href="https://wiki.thedarkmod.com/index.php?title=User:VanishedOne&amp;diff=25481"/>
		<updated>2019-08-23T20:02:23Z</updated>

		<summary type="html">&lt;p&gt;VanishedOne: /* Material shaders */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VanishedOne&#039;s notes and queries.&lt;br /&gt;
&lt;br /&gt;
== Stim/Response ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Type&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|Comment in tdm_stim_response.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;40%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FROB&lt;br /&gt;
|Frobbed&lt;br /&gt;
|The Response to apply STIM_FROB won&#039;t work everywhere the dedicated frob Response will (only the latter collects loot).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FIRE&lt;br /&gt;
|Fire&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_WATER&lt;br /&gt;
|Water&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_DAMAGE&lt;br /&gt;
|damages target&lt;br /&gt;
|AI and the player have a STIM_DAMAGE Response to make this the case. It&#039;s not a response to ordinary damage (though a script object could listen for SIG_DAMAGE).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SHIELD&lt;br /&gt;
|protects against arrows or physical blows&lt;br /&gt;
|Used? Usable?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HEALING&lt;br /&gt;
|heals target&lt;br /&gt;
|The player has a Response to this; AI, by default, don&#039;t.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_HOLY&lt;br /&gt;
|holy is applied&lt;br /&gt;
|Undead use a special script to get the damage def. from the source (usually a holy water arrow result); without one, there&#039;s no effect.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MAGIC&lt;br /&gt;
|Magic is being used&lt;br /&gt;
|Used anywhere? What&#039;s the purpose of this one? (From Thief&#039;s MagicZapStim?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TOUCH&lt;br /&gt;
|triggered if touched&lt;br /&gt;
|Couldn&#039;t get a Response to fire on ordinary collisions, or on entering brush triggers. Maybe it&#039;s meant to be used as a collision stim.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KNOCKOUT&lt;br /&gt;
|target is knocked out&lt;br /&gt;
|AI/heads (including the player head) inherit a Response to this as standard to enable it to knock AI out, but the blackjack presumably uses a non-S/R mechanism for hit-cone-dependent knockouts. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_KILL&lt;br /&gt;
|target is killed&lt;br /&gt;
|AI don&#039;t have a Response to this as standard. No luck activating Responses through death by normal means. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RESTORE&lt;br /&gt;
|target is restored&lt;br /&gt;
|What does this mean, if not the same as STIM_HEALING?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_LIGHT&lt;br /&gt;
|triggered by light&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/15713-stim-light/] Testing revealed no special handling (and &#039;use bounds&#039; doesn&#039;t work with light volumes; presumably if a light has a model it&#039;ll use that).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_SOUND&lt;br /&gt;
|triggered by sound&lt;br /&gt;
|Testing with a speaker revealed no special handling. (What about AI-audible soundprop?)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_VISUAL&lt;br /&gt;
|visual contact&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_INVITE&lt;br /&gt;
|can be used to trigger special behaviour (like a stool can invite an AI to sit down)&lt;br /&gt;
|Probably related to this idea from 2005: [http://forums.thedarkmod.com/topic/864-list-of-stim-response-animations/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_READ&lt;br /&gt;
|Can be read&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_RANDOM&lt;br /&gt;
|Random response is selected (does this make sense?)&lt;br /&gt;
|Whether it was meant to fire any of the entity&#039;s Responses by random selection, or one of its Responses to this stim, I&#039;m not sure this works (but the latter case can be taken care of by enabling &#039;Random Effects&#039; on any Response).&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TIMER&lt;br /&gt;
|Timer has been triggered.&lt;br /&gt;
|Used?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_COMMUNICATION&lt;br /&gt;
|Communication vocalization&lt;br /&gt;
|Handled in code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_GAS&lt;br /&gt;
|Gas arrows / mines&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TRIGGER&lt;br /&gt;
|Entity &amp;quot;activation&amp;quot; stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_TARGET_REACHED&lt;br /&gt;
|Can be emitted if the endposition (e.g. by using an effect_moveToPosition) is reached&lt;br /&gt;
|Emitted to what?&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_PLAYER&lt;br /&gt;
|The &amp;quot;player&amp;quot; stim&lt;br /&gt;
|Radial stim on the player&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_FLASH&lt;br /&gt;
|The flashbomb stim&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_BLIND&lt;br /&gt;
|A &amp;quot;blind&amp;quot; stim that blinds the actor (this is stronger than a FLASH stim, no visibility is needed)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|STIM_MOSS&lt;br /&gt;
|stim from moss arrows (e.g., for dampening window shattering)&lt;br /&gt;
|func_fractures come with a Response that calls breakable_glass::on_moss_stim (in tdm_breakable_glass.script)&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is the magnitude of collision stims affected by velocity/force of collision, as reportedly in the Dark Engine?&lt;br /&gt;
&lt;br /&gt;
Are these (in Response.h) used?&lt;br /&gt;
&lt;br /&gt;
 * How much damage must be applied for this response?&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MinDamage;&lt;br /&gt;
 /**&lt;br /&gt;
 * No more than this.&lt;br /&gt;
 */&lt;br /&gt;
 float				m_MaxDamage;&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
&lt;br /&gt;
&#039;looks like Doom3 can load FLT models, which seem to be quite terrain specific. Might be something to look into if anyone has copious free time.&#039; [http://forums.thedarkmod.com/topic/12155-how-do-you-guys-do-terrain/#entry246974]&lt;br /&gt;
&lt;br /&gt;
A couple of D3BFG FX decls refer to .ips models (itemspawn.fx - model &amp;quot;itemrespawn.ips&amp;quot;; berserkspawn.fx - model &amp;quot;berserkrespawn.ips&amp;quot;). Maybe another development relic like the .particle extension?&lt;br /&gt;
&lt;br /&gt;
Custom vertex normals usable in ASE but not LWO? [http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=422334][http://forums.thedarkmod.com/index.php?/topic/19426-exporting-models-from-blender-into-tdm/&amp;amp;do=findComment&amp;amp;comment=427049]&lt;br /&gt;
&lt;br /&gt;
== AFs ==&lt;br /&gt;
&lt;br /&gt;
Keywords not in [https://www.iddevnet.com/doom3/afs.html]:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in settings:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
model (same as mesh?)&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveTranslation&amp;lt;br /&amp;gt;&lt;br /&gt;
noMoveRotation&amp;lt;br /&amp;gt;&lt;br /&gt;
minMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
maxMoveTime&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;in body sections:&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
contents (solid, body, corpse, playerclip, monsterclip) (clipping for moveables applied automatically?)&amp;lt;br /&amp;gt;&lt;br /&gt;
clipMask&amp;lt;br /&amp;gt;&lt;br /&gt;
mod (orientation, position, both) -- &#039;joint mod&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
inertiaScale&amp;lt;br /&amp;gt;&lt;br /&gt;
frictionDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
contactMotorDirection&amp;lt;br /&amp;gt;&lt;br /&gt;
(&#039;custom&#039; model type for bodies isn&#039;t actually implemented.)&lt;br /&gt;
&lt;br /&gt;
fixed - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&lt;br /&gt;
&lt;br /&gt;
slider - constraint type, includes:&amp;lt;br /&amp;gt;&lt;br /&gt;
body1&amp;lt;br /&amp;gt;&lt;br /&gt;
body2&amp;lt;br /&amp;gt;&lt;br /&gt;
friction&amp;lt;br /&amp;gt;&lt;br /&gt;
axis&lt;br /&gt;
&lt;br /&gt;
== Animations ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;enable_death_anim&amp;quot; spawnarg to use an anim called &#039;death&#039; before going into ragdoll: [http://forums.thedarkmod.com/index.php?/topic/16523-solved-death-animation-before-ragdolls/&amp;amp;do=findComment&amp;amp;comment=354063]&lt;br /&gt;
&lt;br /&gt;
== LOD ==&lt;br /&gt;
&lt;br /&gt;
Comment in Misc.cpp: &#039;idAnimateds are the only class allowed to simply still their md5mesh as a LOD optimization, which they do by setting &amp;quot;model_lod_N&amp;quot; to the special value &amp;quot;be_still&amp;quot;. They can also swap in another animated model, or a static FS model.&#039;&lt;br /&gt;
&lt;br /&gt;
== Textures ==&lt;br /&gt;
&lt;br /&gt;
&#039;D3&#039;s folder depth limitation for DDS files. You cannot have DDS files more than 5 folders deep... - D3 just doesn&#039;t want that, only the id people know why this unfortunate limit is there in the first place.&#039; [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/page-8#entry185663] (Does this limit remain?)&lt;br /&gt;
&lt;br /&gt;
== Material shaders ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/materials.php] (including TDM&#039;s additions):&lt;br /&gt;
&lt;br /&gt;
xrayRenderMap -- some code support from RoE may be missing (cf. Entity.cpp, BrittleFracture.cpp...). Perhaps TDM was built on [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/game /neo/game] instead of [https://github.com/TTimo/doom3.gpl/tree/aaa855815ab484d5bd095f347163194ac569abcc/neo/d3xp /neo/d3xp]. What&#039;s left can create a subview that skips some surfaces, e.g. there&#039;s an AI it can make bald, but the rules are unclear (some bodies just turn invisible, some don&#039;t) and I think &amp;quot;skin_xray&amp;quot; and &amp;quot;skin_head_xray&amp;quot; spawnargs may be broken. (Also D3BFG has a base/_common/generated/images/textures/sfx/xrayblend#__0200.bimage for which there&#039;s no apparent equivalent.)&lt;br /&gt;
&lt;br /&gt;
portalRenderMap -- disabled at tr_subview.cpp line 790. Still appears in textures/smf/portal_sky&lt;br /&gt;
&lt;br /&gt;
vertexParm2, stereoeye left/right -- not in TDM. Seems to be something id added to D3 BFG. [https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/Material.cpp]&lt;br /&gt;
&lt;br /&gt;
shadowDraw -- appears in D3&#039;s shaderdemos/shadowDrawLight in shaderDemo.mtr, but presumably leftover from an earlier stage of development. Would have been used in a stage of a light material to make that stage &#039;drawn on the shadows&#039;. (It&#039;s listed in [https://modwiki.dhewm3.org/Stage_material_keywords_%28Prey%29] so maybe it survived in Prey?)&lt;br /&gt;
&lt;br /&gt;
glasswarp -- removed. [http://bugs.thedarkmod.com/view.php?id=3868][http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355546] Heathaze program stages are used instead. &lt;br /&gt;
&lt;br /&gt;
texgen normal -- disabled. (Apparently id&#039;s code had it generating a warning, similar to the unused glasswarp implementation. [http://forums.thedarkmod.com/topic/15178-tdm-engine-development-page/page-7#entry355264])&lt;br /&gt;
&lt;br /&gt;
suppressInSubview -- global; appears occasionally in D3/RoE materials. Probably does what it says and hides surfaces in remote/mirror views, but I haven&#039;t tested.&lt;br /&gt;
&lt;br /&gt;
screen -- stage keyword; appears in D3/RoE&#039;s textures/smf/window_scratch, and in TDM&#039;s portal_sky. Projects to screen instead of surface co-ordinates?&lt;br /&gt;
&lt;br /&gt;
screen2 -- same as screen? Code comment: &#039;duzenko: treated by renderer same as TG_SCREEN, simplified&#039;&lt;br /&gt;
&lt;br /&gt;
name -- stage keyword. Code comment: &#039;BSM Nerve: Added for stage naming in the material editor&#039;&lt;br /&gt;
&lt;br /&gt;
portalSky -- as distinct from sort portalSky.&lt;br /&gt;
&lt;br /&gt;
&#039;New _currentDepth global image accessible by any shader. Unlike _currentRender, using this keyword in a material file does not delay the shader being drawn.&lt;br /&gt;
New ignoreDepth material file keyword. Prevents the shader being clipped by solid geometry.&#039; -- [http://bugs.thedarkmod.com/view.php?id=3877]&lt;br /&gt;
&lt;br /&gt;
&#039;Added new material flag: sort afterfog&lt;br /&gt;
Applied it to material textures/particles/dustcloud and that seems to fix the fog overdraw.&lt;br /&gt;
This only works well for ambient-only materials, that weren&#039;t fogged before, like the waterfall in the test map.&#039; -- [http://bugs.thedarkmod.com/view.php?id=4685#c9727]&lt;br /&gt;
&lt;br /&gt;
islightgemsurf [http://bugs.thedarkmod.com/view.php?id=4379#c8359]&lt;br /&gt;
&lt;br /&gt;
withAudio -- parameter added to videoMap [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
cubicLight, ambientCubicLight -- [http://bugs.thedarkmod.com/view.php?id=3881]&lt;br /&gt;
lightFalloffCubeMap, makeIrradiance() -- [http://forums.thedarkmod.com/topic/19147-parallax-corrected-cubemaps/#entry413520]&lt;br /&gt;
&lt;br /&gt;
shadowmapOffset -- global keyword. Obviously a shadowmap tweak, but seems to be undocumented so far.&lt;br /&gt;
&lt;br /&gt;
ambientRimColor -- [http://forums.thedarkmod.com/topic/19669-rim-lights/] Presently global; unclear whether we&#039;ll get it as a stage keyword, and whether the global version will remain if we do.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I&#039;m coming to doubt that masks work in light-interactive stages. (Unsure about maskDepth.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Do we have `sort underwater`? Seen [http://forums.thedarkmod.com/topic/15876-proper-realistic-moving-water/#entry334390 here] but not in idDevNet docs. (Maybe a mix-up with Quake 3 or ET:QW?)&lt;br /&gt;
----&lt;br /&gt;
noFog used to do nothing except during dmap with lightCarve -- [http://bugs.thedarkmod.com/view.php?id=3662] -- but now see [http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432862],[http://forums.thedarkmod.com/topic/19774-beta-testing-207/page-9#entry432873]&lt;br /&gt;
----&lt;br /&gt;
Is [http://forums.thedarkmod.com/topic/6505-re-did-broadheadagain/page-2#entry128468 this] how the hardwood surface type differs from regular wood? -- No: [http://bugs.thedarkmod.com/view.php?id=1421#c3251][http://bugs.thedarkmod.com/view.php?id=1422#c3252]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;rgb parameters work on cubemap stages ONLY when there are no diffuse/bumpmap/specular map blending stages set on the material&#039; [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-5#entry388559] &lt;br /&gt;
&lt;br /&gt;
Under these conditions, vertexColor has an effect but inverseVertexColor seems to have the exact same effect.&lt;br /&gt;
----&lt;br /&gt;
ignoreAlphaTest appears not to work on light-reactive stages.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
In my experience the following can&#039;t be used with light interactions:&lt;br /&gt;
* Surfaces altered by deforms. (All non-particle deforms? Does TDM even use &#039;deform eyeball&#039;?) But turbulent is at least partly compatible with light-interactive bump/specular. Others...?&lt;br /&gt;
* Particles spawned from surfaces (except that the simple ambient can add colour to them).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
deform eyeball -- [http://idtechforums.fuzzylogicinc.com/index.php?topic=595.0]&lt;br /&gt;
----&lt;br /&gt;
clamp keywords: if materials look fine in DR but warped or invisible in TDM (e.g. for hinge decals), move the control points in the Texture Tool so the top-left is at 0,0. This seems reliable on patches. On brushes, I&#039;m not sure clamp/zeroclamp/alphazeroclamp is reliable at all.&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;add&amp;quot; image program only works with uncompressed textures.&#039; [http://forums.thedarkmod.com/topic/14394-apples-and-peaches-obsttortes-mapping-and-scripting-thread/page-14#entry395180] I think this may be true of other image program functions too.&lt;br /&gt;
----&lt;br /&gt;
It seems &amp;quot;soundmap&amp;quot; gives bars for any string token except &amp;quot;wavelength&amp;quot;. &amp;quot;soundmap&amp;quot; alone is an error.&lt;br /&gt;
----&lt;br /&gt;
What&#039;s the nodrop surface parameter for (in textures/common/nodrop)? Same as [http://tremap.xtr3m.net/__Games/Xreal/Manual_Shader_1/ShaderManual.htm#nodrop]? Yes, apparently -- comment from D3 assets: &#039;nodrop is a volume modifier that is tested before dropping items, used to keep items from cluttering up death pits&#039;&lt;br /&gt;
----&lt;br /&gt;
id&#039;s cushion material is &#039;solid to movement&#039;, TDM&#039;s is set nonsolid. &lt;br /&gt;
----&lt;br /&gt;
Do blood decals still use this hack? [http://forums.thedarkmod.com/topic/11987-ocns-questions-on-tdm-editing/#entry239047]&lt;br /&gt;
----&lt;br /&gt;
&#039;The &amp;quot;enhanced&amp;quot; interaction shader derives the glossiness part from the color-values of the specularmap, which were normally just driving the specular strength as you mentioned. The non &amp;quot;enhanced&amp;quot; shader does not do this and uses a preset gloss value instead.&#039; [http://forums.thedarkmod.com/index.php?/topic/11893-ungoliants-mapping-questions/page/14/&amp;amp;tab=comments#comment-333485] (Do the GLSL shaders replicate this?)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
TDM macros: [http://bugs.thedarkmod.com/view.php?id=3121]&lt;br /&gt;
&lt;br /&gt;
PARTICLE_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
&lt;br /&gt;
GLASS_MACRO:&lt;br /&gt;
&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
&lt;br /&gt;
TWOSIDED_DECAL_MACRO:&lt;br /&gt;
  discrete&lt;br /&gt;
  nonsolid&lt;br /&gt;
  noimpact&lt;br /&gt;
  polygonOffset 1&lt;br /&gt;
  noShadows&lt;br /&gt;
  sort decal&lt;br /&gt;
  noselfShadow&lt;br /&gt;
  noShadows&lt;br /&gt;
  translucent&lt;br /&gt;
  twosided&lt;br /&gt;
(Why translucent?)&lt;br /&gt;
&lt;br /&gt;
== ShaderParms ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;5%&amp;quot;|Number&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;20%&amp;quot;|Alias (RenderWorld.h)&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;10%&amp;quot;|Alias in tdm_defs.script&lt;br /&gt;
!bgcolor=#d0d0e0 width=&amp;quot;55%&amp;quot;|My notes&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|0&lt;br /&gt;
|SHADERPARM_RED&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|1&lt;br /&gt;
|SHADERPARM_GREEN&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|SHADERPARM_BLUE&lt;br /&gt;
|✓&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|3&lt;br /&gt;
|SHADERPARM_ALPHA&lt;br /&gt;
SHADERPARM_TIMESCALE&lt;br /&gt;
|✓&lt;br /&gt;
✓&lt;br /&gt;
|Contra [[List_of_shaderParm_variables]], may be set &amp;gt; 1 by LOD fading.&amp;lt;br /&amp;gt;&lt;br /&gt;
Read by lights on spawn.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|4&lt;br /&gt;
|SHADERPARM_TIMEOFFSET&lt;br /&gt;
|✓&lt;br /&gt;
|Set on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Lights set this to -MS2SEC(gameLocal.time) on turning on, when they break, and on spawn if shaderParm4 isn&#039;t set in spawnargs.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|5&lt;br /&gt;
|SHADERPARM_DIVERSITY&lt;br /&gt;
|✓&lt;br /&gt;
|Programmer comment: &#039;random between 0.0 and 1.0 for some effects (muzzle flashes, etc)&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Used for particle randomisation ([http://bugs.thedarkmod.com/view.php?id=4132#c7504] [http://bugs.thedarkmod.com/view.php?id=4132#c7506]; see also [http://forums.thedarkmod.com/topic/16710-particle-request-candle-smoke/page-3#entry359521])&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|7&lt;br /&gt;
|SHADERPARM_MODE&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
SHADERPARM_TIME_OF_DEATH&lt;br /&gt;
|✓&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for selecting which shader passes to enable&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Security camera: [[#Security_camera|q.v.]]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for the monster skin-burn-away effect enable and time offset&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Toggled on func_static activation [http://forums.thedarkmod.com/topic/17308-epis-many-questions-thread/page-7#entry413964]. Set to 1 when a light breaks.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|8&lt;br /&gt;
|SHADERPARM_MD5_SKINSCALE&lt;br /&gt;
SHADERPARM_MD3_FRAME&lt;br /&gt;
SHADERPARM_BEAM_END_X&lt;br /&gt;
SHADERPARM_SPRITE_WIDTH&lt;br /&gt;
SHADERPARM_PARTICLE_STOPTIME&lt;br /&gt;
|&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
✓&lt;br /&gt;
|Programmer comment: &#039;for scaling vertex offsets on md5 models (jack skellington effect)&#039;&lt;br /&gt;
[http://forums.thedarkmod.com/topic/18643-md3-models/]&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;for _beam models&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
No effect on deform sprite patch; maybe its model isn&#039;t _SPRITE?&amp;lt;br /&amp;gt;&lt;br /&gt;
Programmer comment: &#039;don&#039;t spawn any more particles after this time&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
AI script event shrivel(time): &#039;Modifies shaderparm 8 from 1.0 to 0.5 over time (will return after multiple frames). Not used in Doom 3.&#039; [https://www.iddevnet.com/doom3/script_ai.php] Is this what SHADERPARM_MD5_SKINSCALE is about? Setting parm8 to nonzero on an AI caused wild glitching in the vertex positions when I tried to look at it: is this just broken or do the materials need something special? See [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L325], [https://github.com/id-Software/DOOM-3/blob/master/neo/renderer/Model_md5.cpp#L257].&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|9&lt;br /&gt;
|SHADERPARM_MD3_LASTFRAME&lt;br /&gt;
SHADERPARM_BEAM_END_Y&lt;br /&gt;
SHADERPARM_SPRITE_HEIGHT&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|10&lt;br /&gt;
|SHADERPARM_MD3_BACKLERP&lt;br /&gt;
SHADERPARM_BEAM_END_Z&lt;br /&gt;
|&lt;br /&gt;
|[http://forums.thedarkmod.com/topic/18643-md3-models/]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|11&lt;br /&gt;
|SHADERPARM_BEAM_WIDTH&lt;br /&gt;
|&lt;br /&gt;
|Luckily it&#039;s unlikely someone would want a frobable func_beam&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
_SPRITE should behave like deform sprite according to code comments (&#039;A simple sprite model that always faces the view axis.&#039; -- Model_sprite.cpp), but in my tests, on an idStaticEntity it faced the reverse of the entity&#039;s direction, even with no &amp;quot;angle&amp;quot; spawnarg. (Whereas _BEAM worked as expected.) Using a deform sprite material (setting materials via a wildcard skin) overrides this but stops the aspect ratio changing: you can use the parms for scaling but the sprite can&#039;t change shape any more.&lt;br /&gt;
&lt;br /&gt;
== Megatextures ==&lt;br /&gt;
&lt;br /&gt;
The idea of megatexture channels as used in ETQW seems to be just appearing in the available code: Megatexture.h has&lt;br /&gt;
&lt;br /&gt;
  static const int MAX_MEGA_CHANNELS = 3; // normal, diffuse, specular&lt;br /&gt;
&lt;br /&gt;
but this variable doesn&#039;t actually seem to be used. D3&#039;s shaderDemos/megaTexture applies the megatexture as blend gl_one, gl_zero. Version 2 of the D3 megatexture mod instead applies it as blend filter (with a regular texture as a diffusemap).&lt;br /&gt;
&lt;br /&gt;
== Lights ==&lt;br /&gt;
&lt;br /&gt;
Do the image maps in foglight stages actually do anything (besides keeping the parser happy)? tdm_fogs/cloud_fog uses lights/spot01 instead of _fog, but nothing I&#039;ve tried seems to make any visual difference. &lt;br /&gt;
&lt;br /&gt;
Ditto for falloff images in foglights, as in fogs/pitFog_to_black.&lt;br /&gt;
&lt;br /&gt;
This (from D3BFG&#039;s fogs.mtr) is how it&#039;s supposed to work:&lt;br /&gt;
&lt;br /&gt;
  // If you replace the default internal fog projection image with your own&lt;br /&gt;
  // texture, make sure that the alpha starts at 0 in the center, reaches&lt;br /&gt;
  // 255 at the borders, and is generally radially symetrical.&lt;br /&gt;
  // The color channel can be left solid white, or it can have additional&lt;br /&gt;
  // color changes with position.&lt;br /&gt;
&lt;br /&gt;
Using images with alpha channels doesn&#039;t seem to make any difference, though.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Foglight alpha values from 0 to 1 have fixed behaviour distinct from the way foglights behave with alpha &amp;gt; 1. D3&#039;s fogs.mtr says the default is applied if alpha &#039;equals the default 1.0&#039;, but that&#039;s not the actual test. renderer/draw_common.cpp:&lt;br /&gt;
&lt;br /&gt;
  // if they left the default value on, set a fog distance of 500&lt;br /&gt;
  	if ( backEnd.lightColor[3] &amp;lt;= 1.0 ) {&lt;br /&gt;
  		a = -0.5f / DEFAULT_FOG_DISTANCE;&lt;br /&gt;
&lt;br /&gt;
Foglights can only have one stage:&lt;br /&gt;
&lt;br /&gt;
  // assume fog shaders have only a single stage&lt;br /&gt;
  stage = lightShader-&amp;gt;GetStage( 0 );&lt;br /&gt;
&lt;br /&gt;
renderer/RenderWorld_local.h:&lt;br /&gt;
&lt;br /&gt;
  // A portal will be considered closed if it is past the&lt;br /&gt;
  // fog-out point in a fog volume.  We only support a single&lt;br /&gt;
  // fog volume over each portal.&lt;br /&gt;
&lt;br /&gt;
Does forceShadows in foglight and blendlight materials work, as id&#039;s docs claim? My test suggested not.&lt;br /&gt;
&lt;br /&gt;
Falloff images don&#039;t have to be monochrome.&lt;br /&gt;
&lt;br /&gt;
== Particles ==&lt;br /&gt;
&lt;br /&gt;
I don&#039;t think particle decls accept .mtr-style expressions like [http://forums.thedarkmod.com/topic/18893-is-it-possible-to-sync-a-particle-emitter-to-a-light-shader/#entry406831] suggests, but the parser does check for table names. You pass the table name (without []) as the parameter for speed, rotation, size or aspect, and what I think happens is that the table is used to change the particle over its lifespan in place of the usual &#039;from&#039; and &#039;to&#039; numbers, allowing more complex transitions. I&#039;m not sure whether it&#039;s possible to use more than one table per decl, since I ran into &#039;can&#039;t integrate tables&#039; errors.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TDM additions:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WorldAxis -- [https://bugs.thedarkmod.com/view.php?id=3950]&lt;br /&gt;
&lt;br /&gt;
softeningRadius -- Presumably to tweak soft particles. Defaults to -2.0f, meaning &#039;auto&#039; according to code comments.&lt;br /&gt;
&lt;br /&gt;
  /* Soft particles -- SteveL #3878&lt;br /&gt;
  	-2.0 is the value at initialization, meaning no user specification: &amp;quot;auto&amp;quot;.&lt;br /&gt;
  	-1.0 means no change to old system: suppress soft particles, but allow modelDepthhack if specified.&lt;br /&gt;
  	 0   means disable all softening for this stage, including modelDepthHack.&lt;br /&gt;
  	 +ve value means apply soft particle effect, allowing overdraw up to the specified depth. &lt;br /&gt;
  	This is more flexible even when not using soft particles, as modelDepthHack &lt;br /&gt;
  	can be turned off for specific stages to stop them poking through walls.&lt;br /&gt;
  	*/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Custom paths:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  const ParticleParmDesc ParticleCustomDesc[] = {&lt;br /&gt;
  	{ &amp;quot;standard&amp;quot;, 0, &amp;quot;Standard&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;helix&amp;quot;, 5, &amp;quot;sizeX Y Z radialSpeed axialSpeed&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;flies&amp;quot;, 3, &amp;quot;radialSpeed axialSpeed size&amp;quot; },&lt;br /&gt;
  	{ &amp;quot;orbit&amp;quot;, 2, &amp;quot;radius speed&amp;quot;},&lt;br /&gt;
  	{ &amp;quot;drip&amp;quot;, 2, &amp;quot;something something&amp;quot; }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
From framework/DeclParticle.cpp&lt;br /&gt;
&lt;br /&gt;
orbit presumably should correspond to Spherical in editParticles, but that&#039;s broken; type &amp;quot;orbit&amp;quot; in manually instead. drip does work in the editParticles menu. Neither is available for selection in DR, and it can&#039;t read them.&lt;br /&gt;
&lt;br /&gt;
  if ( !token.Icmp( &amp;quot;customPath&amp;quot; ) ) {&lt;br /&gt;
  			src.ReadToken( &amp;amp;token );&lt;br /&gt;
  			if ( !token.Icmp( &amp;quot;standard&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_STANDARD;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;helix&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_HELIX;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;flies&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_FLIES;&lt;br /&gt;
  			} else if ( !token.Icmp( &amp;quot;spherical&amp;quot; ) ) {&lt;br /&gt;
  				stage-&amp;gt;customPathType = PPATH_ORBIT;&lt;br /&gt;
  			} else {&lt;br /&gt;
  				src.Error( &amp;quot;bad path type: %s\n&amp;quot;, token.c_str() );&lt;br /&gt;
  			}&lt;br /&gt;
&lt;br /&gt;
This, however, checks for a &amp;quot;spherical&amp;quot; (not &amp;quot;orbit&amp;quot;) keyword, but has no &amp;quot;drip&amp;quot;. PPATH_DRIP is defined in the header file and tested elsewhere, though.&lt;br /&gt;
&lt;br /&gt;
== GLprogs ==&lt;br /&gt;
&lt;br /&gt;
Frob highlight: &#039;The frob.vfp program is not active. This has been part of Rebb&#039;s frobhighlighting improvement project, but in the end we ran into an issue with TGA files (they ended up with a heavy green tint in-game, which (we think) is due to some sort of limitation in the closed source parts - can&#039;t remember exactly).&#039; [http://forums.thedarkmod.com/topic/10129-tdm-commands-and-variables/#entry199639] See [http://forums.thedarkmod.com/topic/8747-tweaks-to-frob-highlight/#entry174954]&lt;br /&gt;
&lt;br /&gt;
== FX ==&lt;br /&gt;
&lt;br /&gt;
&#039;In the vanilla code &amp;quot;trackorigin&amp;quot; will not work unless &amp;quot;fadeIn&amp;quot; or &amp;quot;fadeOut&amp;quot; is set too.&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=56.msg395#msg395] Bug remains in TDM: [http://bugs.thedarkmod.com/view.php?id=4653]&lt;br /&gt;
&lt;br /&gt;
Decal splatting has a short vertical range. For FX called in frame commands, use bindto &amp;quot;origin&amp;quot;. For func_fx, its origin should be &amp;lt; 8 units above the ground. Decals are randomly rotated and there seems to be no way to override that.&lt;br /&gt;
&lt;br /&gt;
Does ignoreMaster work in singleplayer? (The fall of my AI test partner&#039;s ragdoll from the sky suggests not.)&lt;br /&gt;
&lt;br /&gt;
  idEntity *ignore_ent = NULL;&lt;br /&gt;
  if ( gameLocal.isMultiplayer ) {&lt;br /&gt;
  	ignore_ent = this;&lt;br /&gt;
  	if ( fxaction.shakeIgnoreMaster ) {&lt;br /&gt;
  		ignore_ent = GetBindMaster();&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
== GUIs ==&lt;br /&gt;
&lt;br /&gt;
Focus doesn&#039;t work in TDM: [http://forums.thedarkmod.com/topic/12987-interactive-gui-surface-question/?p=266445]&lt;br /&gt;
&lt;br /&gt;
It looks as though GUIs can use tables, etc. like materials, as seen in D3&#039;s malfunction.gui:&lt;br /&gt;
&lt;br /&gt;
  windowDef Static {&lt;br /&gt;
  	//static overlay&lt;br /&gt;
  		rect	0 ,0 ,640 ,480 &lt;br /&gt;
  		visible	1&lt;br /&gt;
  		background &amp;quot;gui/static&amp;quot;&lt;br /&gt;
  		matcolor	1, 1, 1, pdhalffade[ time * 0.001 ]&lt;br /&gt;
  	}&lt;br /&gt;
&lt;br /&gt;
And test user variables in conditions (as in D3&#039;s sttp.gui and indeed TDM&#039;s [[Loading_Screen_Text]]).&lt;br /&gt;
&lt;br /&gt;
== Sound ==&lt;br /&gt;
&lt;br /&gt;
Stuff not in [https://www.iddevnet.com/doom3/sounds.php] (including TDM additions; passing over reverb, ordered, plain and onDemand, all marked no longer supported):&lt;br /&gt;
&lt;br /&gt;
antiPrivate -- opposite of private, presumably&lt;br /&gt;
&lt;br /&gt;
playonce&lt;br /&gt;
&lt;br /&gt;
fromVideo -- [http://bugs.thedarkmod.com/view.php?id=4534] [http://wiki.thedarkmod.com/index.php?title=Cutscene_video_with_FFmpeg]&lt;br /&gt;
&lt;br /&gt;
no_efx -- [http://bugs.thedarkmod.com/view.php?id=4688#c9812]&lt;br /&gt;
&lt;br /&gt;
== Triggers ==&lt;br /&gt;
&lt;br /&gt;
Patches can be used for triggers and &#039;there could be separate triggers to be walked into depending on which direction you are walking&#039;. [http://forums.thedarkmod.com/topic/14459-location-system-newbie-questions/#entry304288]&lt;br /&gt;
&lt;br /&gt;
&#039;This is a trigger_relay with set of targets (items) which will be gived to the player when map will be loaded. All targets will be activated by Code. This trigger must have a &amp;quot;devmap&amp;quot; name.&#039; &#039;trigger playtesting item gives, if we didn&#039;t get here from a previous level&#039; &#039;the devmap key will be set on the first devmap, but cleared on any level transitions&#039; [http://idtechforums.fuzzylogicinc.com/index.php?topic=631.msg6576#msg6576]&lt;br /&gt;
&lt;br /&gt;
== Targets ==&lt;br /&gt;
&lt;br /&gt;
target_setinfluence removed? (Maybe considered redundant with S/R or too D3/&#039;demonic&#039;-specific? Comparing [https://modwiki.xnet.fi/Entity_Listing_%28Doom_3%29#t] to the TDM entity list suggests a purge of even some quite generic entities may have occurred.) idTarget_SetInfluence still exists so it can be recreated, but may be bugged in TDM [http://forums.thedarkmod.com/topic/10680-kalwins-questions/]. Can crash TDM on map load if e.g. targetted by worldspawn. D3 usage: [http://www.moddb.com/games/doom-iii/tutorials/creating-target-setinfluences]; D3 def here: [https://github.com/DanielGibson/d3-base-assets/blob/master/sabase/def/targets.def]&lt;br /&gt;
&lt;br /&gt;
== PortalSky ==&lt;br /&gt;
&lt;br /&gt;
Game_local.h --&lt;br /&gt;
&lt;br /&gt;
  enum {&lt;br /&gt;
  	PORTALSKY_STANDARD = 0,			// classic portalsky&lt;br /&gt;
  	PORTALSKY_GLOBAL = 1,			// always following portal sky&lt;br /&gt;
  	PORTALSKY_LOCAL = 2,			// following portal sky from a spot&lt;br /&gt;
&lt;br /&gt;
Misc.cpp --&lt;br /&gt;
&lt;br /&gt;
  if ( spawnArgs.GetInt( &amp;quot;type&amp;quot; ) == PORTALSKY_GLOBAL )&lt;br /&gt;
&lt;br /&gt;
  gameLocal.portalSkyScale = spawnArgs.GetInt( &amp;quot;scale&amp;quot;, &amp;quot;16&amp;quot; );	&lt;br /&gt;
&lt;br /&gt;
[http://forums.thedarkmod.com/topic/13442-implementing-3d-skyboxes-that-follow-the-player/page-5#entry311721], [http://bugs.thedarkmod.com/view.php?id=3108]&lt;br /&gt;
&lt;br /&gt;
== Security camera ==&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::Pain() refers to an &amp;quot;fx_damage&amp;quot; spawnarg not documented in the entityDef. Similarly, idSecurityCamera::Killed() refers to an &amp;quot;fx_destroyed&amp;quot; spawnarg.&lt;br /&gt;
&lt;br /&gt;
idSecurityCamera::SetAlertMode() looks to have code to update SHADERPARM_MODE (parm7), where&lt;br /&gt;
&lt;br /&gt;
  enum { SCANNING, LOSINGINTEREST, ALERT, ACTIVATED }&lt;br /&gt;
&lt;br /&gt;
suggesting it&#039;s possible to have something like the T2 Watchers&#039; colour-changing lights.&lt;br /&gt;
&lt;br /&gt;
== Misc. ==&lt;br /&gt;
&lt;br /&gt;
What is/was trigger_air? (textures/common/trigair) There&#039;s no such entity def., even among the commented-out ones in triggers.def. Maybe related to the commented-out info_vacuum in d3_junk.def?&lt;br /&gt;
&lt;br /&gt;
`knockout` spawnarg on atdm:weapon_base (&#039;If set to true, a hit with that weapon knocks the AI out&#039;) -- working/used? The blackjack instead uses a `knockout` spawnarg in its melee def. (melee_blackjack_ovr): compare atdm:damage_moveable, which also has a `knockout_power` spawnarg.&lt;br /&gt;
&lt;br /&gt;
`inv_item_count` defined on atdm:playertool: used for anything? (Compare `inv_count`.)&lt;br /&gt;
&lt;br /&gt;
Does [[Clipmodel contents spawnarg|clipmodel_contents]] still exist/work? -- Yes, as in atdm:blood_marker&lt;br /&gt;
&lt;br /&gt;
$player1.replaceInvItem($some_inv_item, $null_entity) -- if $some_inv_item was simply placed in the world, the inventory icon will disappear if it was on the screen; if it entered the inventory via the shop, the icon will remain until cycled away from.&lt;br /&gt;
&lt;br /&gt;
func_splat -- undocumented in the entityDef, &amp;quot;splatAngle&amp;quot; spawnarg can specify rotation. (I&#039;m not sure the fade respects decalInfo. Decals seem to disappear after a fixed time even if there is no decalInfo.)&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;classname&amp;quot; &amp;quot;func_static&amp;quot;&lt;br /&gt;
  &amp;quot;sr_class_1&amp;quot; &amp;quot;S&amp;quot;&lt;br /&gt;
  &amp;quot;sr_radius_1&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  &amp;quot;sr_state_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;sr_time_interval_1&amp;quot; &amp;quot;200&amp;quot;&lt;br /&gt;
  &amp;quot;sr_type_1&amp;quot; &amp;quot;2&amp;quot;&lt;br /&gt;
  &amp;quot;sr_use_bounds_1&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
  &amp;quot;solid&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Texture brushes of this entity with textures/common/collision and put them under your rain/snow patches so you can no longer carry a lit candle through a downpour.&lt;/div&gt;</summary>
		<author><name>VanishedOne</name></author>
	</entry>
</feed>