MonStats2.txt

MonStats2.txt

Description: by Nefarius, restyled and expanded by Ogodei

Categories: File Guides (1.10 - 1.14)


NOTE from Ogodei
"During the restyling of this guide, I chose to follow Nefarius' classification, but Instead of repeating classes like "Collision Detection I and II" I preferred to put together all the columns belonging to the same theme."

MonStats2.txt Fileguide by Nefarius

ID Pointer

Id – Pointer used by MonStats.txt to link to this line via the MonStatEx field.
NOTE: multiple monsters can link to the same line.

Collision Detection

Height - OverlayHeight - pixHeight: not used (Height should be the size in in-game sub-tiles)

SizeX - SizeY: X-diameter in sub-tiles, used for collision and proximity checking. It ranges from -1 to 3.
NOTE: it may be worthy to note that while pets do not use this setting towards the players, they can still block each other. That's why necromancers that teleport along with large monsters (read: Balrogs, Urdars and similar which use a size bigger than 1) will have all of their minions blocked into the same position. In order to fix this behavior just set all those monster sizes to 1.

NoGfxHitTest: boolean that controls whenever the game uses the x/y diameter settings for collision detection or special, superimposed values.

htTop - htLeft - htWidth - htHeight: the dimensions of the superimposed bounding box, probably using the pivot of the animation as x/y 0.

Miscellaneous Settings

SpawnCol: equivalent to 1.00-1.09 eSpawnCol column, controls which spawning method the game uses to create this unit, originally

CODE: Select all

0=normal spawning via m1-25 columns, 
1=special spawning via DS1 only (special layering setup), 
2=spawn via s1-25 columns. Due to the changes to levels.txt, this column becomes useless, S1-25 and M1-25 are identical in 1.10+. Setting it to 1 will still prevent them from spawning however.
isAtt: boolean which ranges from 0 to 1 and states whether the unit can be attacked or not.

revive: boolean which ranges from 0 to 1 and states whether the unit can be revived or not.

critter: boolean which ranges from 0 to 1 and states whether the unit can is considered to be a critter or not. Many of the critter specific effects are applied to the unit via this columns, others are hardcoded to their hcIdx and baseIds, and still others are only appended via levels.txt critter spawning columns.

small: boolean which ranges from 0 to 1 and states whether the unit can be knocked back with 100% efficiency or not.

large: boolean which ranges from 0 to 1 and states whether the unit can be knocked back with only 25% efficiency or not.

soft: probably has to do something with sound effects. However, it is a boolean which ranges from 0 to 1 and it is usually set to 1 for enemies that lack flesh, like undead and skeletons.

inert: boolean which ranges from 0 to 1 and states whether the unit is aggressive or harmless. It is often used with NPC's.

objCol: boolean, The explanation in the old guide is unclear, I don't know what to look for when testing this. Probably has to do if the unit is handled like an object while alive.

deadCol: boolean which ranges from 0 to 1 and states whether the unit's corpse collides or not with other units.

unFlatDeath: boolean which ranges from 0 to 1 and states whether the unit's corpse can be walked through or not.

Shadow: boolean which ranges from 0 to 1 and states whether the unit projects a shadow on the ground or not.

noUniqueShift: boolean which ranges from 0 to 1 and states whether the unit can make use of the random palettes from RandTransforms.dat or not.

compositeDeath : boolean which ranges from 0 to 1 and states whether the unit's Death animation can make use of all of the components or only of TR.

localBlood: probably defines the z-offset from where to release blood when hit. (this is not a boolean). Setting the next column to a value is enough to make a unit bleed.

Bleed: 0=don't bleed, 1=small blood missile (missiles 18-19), 2=small and large blood missiles (missiles 20-21), >3 will pick other missiles (I.E. each time a pair of two 3 would allow it to pick 22-23, in case the behavior is still like 1.09).

Light: It is the area lit by the light radius this monster has in sub-tiles, default is no light radius.

light-r - light-g - light-b: RGB values for light-color (255,255,255 = white obviously).

Utrans - Utrans(N) - Utrans(H): defines which palette entry to use on normal, nightmare and hell, from both the units palshift file and transtransforms.dat – used by the game to give act bosses a different color on each difficulty for example.

Heart - Bodypart: broken as of 1.07 – when blizzard introduced TreasureClassEx.txt they broke MonItemPercent.txt, in old days, this column defined which items the unit dropped in addition to their treasureclass (organ and heart drops from alpha diablo II). The columns are useless, until someone manages to recreate the functionality MonItemPercent.txt had in 1.00-1.06.

InfernoLen: Length of each inferno sub-animation.

InfernoAnim: mode to use for inferno animation, I assume this uses the numerical ID of the lines on MonMode.txt (9=S2,11=S4 and so on, I'm not sure though)

InfernoRollback: Length of the rollback (I.E. return to frame 1) of the inferno animation.

ResurrectMode: Animation mode to use when resurrected, most use NU, but some such as skeletons have a special skill (SkeletonRaise) that applies a skill sequence to them in MonStats, this is why they have xx in here (or summons, the animation of which is controlled by skills.txt) – some others like fallen have special “stand up” animations.

ResurrectSkill: Skill to use when being resurrected, only needed if the skill is also present in MonStats.txt I guess.

Restore: has to do with how the game handles the monster, monsters set to 0 are not stored permanently (Izual's Ghost, Natalya, the Familiar Summon (the “eyeball” scout summon the Necro had in the alpha version of D2) , all D2X summons, all non DS1 based traps (I.E those traps that spawn once and die)), 1 is the default value, that will make the game store and restore the units as needed when the maps load/unload. 2 is a special setting for large constructs, like towers, spawners and catapults.

AutomapCel : what index in Maximap.DC6 is used to display this monster on the AutoMap. (does not update – go cry now you cheaters), to use this NoMap needs to be enabled.

NoMap: Boolean. If set to 0, the monster will not use an automap entry, 1 if it is meant to do it.

NoOvly: boolean which ranges from 0 to 1 and states whether the unit can make use of Overlays or not. It is often used by stationary units like the Bone Wall blocks.

Weapon Settings

MeleeRng: radius of the Melee attack of the monster, which works exactly like the 'range' column in Weapons.txt.

BaseW: base weaponclass, uses the codes from weaponclass.txt – for some AIs (such as that of the Necro Skeleton) this will define which special effects are being applied. (in 1.00-1.06 you could make the necro skeletons work like archers by setting the equivalent of this column to “bow” – this no longer works). Note, this will apply all the hardcoded effects of a specific weaponclass to the unit (such as how some modifiers work).

HitClass: has to do with how successful hits are handled by the target, some hitclasses have minor effects, such as making specific sounds on impact, I doubt there is much more to it then some client side effects (but there may yet be some surprises here) – probably uses the same hitclasses as used by missiles.

Display and Component settings

HDv - TRv - LGv - Rav - Lav - RHv - LHv - SHv - S1v - S2v - S3v - S4v - S5v - S6v - S7v - S8v: equipment-graphic type for head, torso, legs, right arm, left arm, right hand, left hand, shield and special 1-8 components. This works just like the 'AlternateGFX' columns in Weapons.txt – Make sure the monster has the component types you specify If you insert multiple graphic types, separated by a comma (“,”), the game will randomly select a component to use.

HD - TR - LG - RA - LA - RH - LH - SH - S1 - S2 - S3 - S4 - S5 - S6 - S7 - S8: Booleans, these columns control whenever the monster has these components or not. Make sure this matches your COF files.

TotalPieces: Total amount of different components this monster has.
NOTE: this is the numeric sum of all the used components (i.e the boolean columns like HD, TR, LG etc.).

mDT - mNU - mWL - mGH - mA1 - mA2 - mBL - mSC - mS1 - mS2 - mS3 - mS4 - mDD - mKB - mSQ - mRN: booleans (death, stall, walk, gethit, attack 1, attack 2, block, cast, special1-4, corpse, knockback, sequence, run), they control which modes this monster has. Some of these have special effects, if you set mGH to 0, the monster will have instant-hit recovery (I.E. golems for example cannot be locked in GH mode, because the game never plays GH anims), mKB is another boolean that controls whenever the monster can be knocked back or not (if mKB is false then items with knockback will have no effect on this monster), otherwise the game will pick the GH animation for knockback. SQ defines whenever this unit can use a skill-sequence or not.

dDT - dNU - dWL - dGH - dA1 - dA2 - dBL - dSC - dS1 - dS2 - dS3 - dS4 - dDD - dKB - dSQ - dRN : controls the number of directions the specific animations for each mode have – this must match the values in the COF files. Otherwise you usually get a nice crash.

A1mv - A2mv - SCmv - S1mv - S2mv - S3mv - S4mv: booleans that control whenever the unit can use these modes while moving, on top of the modes WL and RN.

Selection Settings

isSel: boolean which ranges from 0 to 1 and states whether the unit can be selected or not

alSel: boolean which ranges from 0 to 1 and states whether the unit can be selected by allies or not.
NOTE: There is a minor glitch on that, which will make enemy monster missiles collide with other enemy units, but this is just a client-side bug

noSel: boolean which ranges from 0 to 1 and states whether every form of selection is prohibited for this unit or not.

shiftSel: boolean, not directly known, used with bonewalls (both the necromancer's bonewalls and big D's boneprison) to prevent them from being properly selected. (I.E. they are selected but no name is ever shown in case of diablo's prison).

corpseSel: boolean which ranges from 0 to 1 and states whether the unit's corpse can be selected or not.

End-row settingsa

EOL – End of Line.

Link to this article: Select all

[url=https://www.d2mods.info/forum/kb/viewarticle?a=359&sid=43e637c1a766687da1deb3e1a127459f]Knowledge Base - MonStats2.txt[/url]