.#typ

.#typ is used as collection of archetypes.
.#typ in PC version of RDR3 got extension .ytyp wheres prefix y stands for win64pc/win64/x64/linux platform.
Thanks to it you can spawn any prop in game (using #map or script)
also you can add special effects like fire, water, smoke ect. to archetypes
or create MLO instance (interior)
Below i will explain main entries in #typ what they do and what they are, based on my research:

<archetypes>

It contains list of archetypes CBaseArchetypeDef and/or MLO archetypes CMloArchetypeDef

<lodDist value="1000"/>

Number in this value means how far will be visible object in game. In this example object will be visible until 1000 unit coord on any axis (x,y,z) if you will be at distance more than 1000 unit (on any direction x,y,z) then object will dissapear.

<flags value="0"/>

Flag determines how object will affect in game.


This section will update in future with more researched flags.

<loadFlags value="0" />

Value is same as Flag value.

Dont know yet whats purpose for it.

<specialAttribute value="0"/>

Its related to #typ flag! (for example <specialAttribute value="5"/> will have different effect in different #typ flags.
Mainly its used for doors and determine how doors will open,

<bbMin/Max x="5.00" y="5.00" z="5.00"/>

This is boundary box values - two pints in box in min and max:


Too small values in bbmin/max will make object flickering in game, disappearing on camera angles or even invisible:


You can generate it using Neos7 3dsmax script (map helper)
bbmin/max must be big enough to match object size.

<hdTextureDist value="150"/>

This is used in texture parenting - on which distance high resolution texture will switch to low resolution.
Explanation how to set texture parenting check _manifest.

<textureDictionary>

If your object use any external texture from #td then you put #td name like this:
<textureDictionary>ytd name here</textureDictionary>
And if your object got only embedded textures and dont use any from #td then you leave it like this:
<textureDictionary/>

<clipDictionary>

Its used only when object got animation and uses clip dictionaries (#cd) then you put name of #cd like this:
<clipDictionary>ycd name here</clipDictionary>
When object dont have any animation you leave it like this:
<clipDictionary/>

<drawableDictionary>

When definied object is inside drawable dictionary (.#dd) then you put name of this dictionary like this:
<drawableDictionary>ydd name here</drawableDictionary>
in other cases you leave it empty:
<drawableDictionary/>

In most cases its used for LODs

<physicsDictionary>

When your object got embedded collision then you put here name of object or name of RPF inside which is that object (both ways works second one is good for neos script at many objects)

<physicsDictionary>name of object with embedded collision here</physicsDictionary>
or
<physicsDictionary>name of RPF inside which is object with embedded collision</physicsDictionary>

If your object dont have any collision or its uses static one then you leave it empty:
<physicsDictionary/>

<assetType>

You can choose type of asset:
ASSET_TYPE_UNINITIALIZED
ASSET_TYPE_FRAGMENT (.#ft)
ASSET_TYPE_DRAWABLE .(#dr)
ASSET_TYPE_DRAWABLEDICTIONARY (.#dd)
ASSET_TYPE_ASSETLESS (MLO)



<extensions>

Extensions are used for many cool things like ladders, spawning peds, adding water,fire or other FX effects, lights, sounds ect...