825 lines
28 KiB
Plaintext
825 lines
28 KiB
Plaintext
# D2Mods Knowledge Base: Article 383
|
||
# Title: MonStats.txt
|
||
# URL: https://d2mods.info/forum/kb/viewarticle?a=383
|
||
|
||
MonStats.txt
|
||
Written by: Nefarius
|
||
|
||
Written on: Wed Jun 21, 2006 5:18 pm
|
||
|
||
Views: 7824
|
||
|
||
Description: by Fecesfaerie [written 2000, modified by Nefarius 2006]
|
||
|
||
Categories: File Guides (1.00-1.06x)
|
||
|
||
In this tutorial, I'll provide you with all the information I've uncovered so far in the
|
||
|
||
monstats.txt file in Diablo 2. This tutorial is largely incomplete as there are still
|
||
|
||
numerous columns that I don't yet understand. Hopefully, it will be completed in time
|
||
|
||
with further study and the help of any other hackers out there willing to share their
|
||
|
||
secrets. The first part of this tutorial simply lists all the columns in this file by name and
|
||
|
||
gives a description of what they do if known. Since some of us use a spreadsheet
|
||
|
||
program like excel to view and edit these files, I'll also refer to these columns by the
|
||
|
||
letter at the top of the spreadsheet as well as their name. The second part of this tutorial
|
||
|
||
will go over a few simple tricks on what you can do with this file.
|
||
|
||
Part I:
|
||
|
||
Class (column A): This determines what name appears over the monster's head when
|
||
|
||
you move the mouse over it.
|
||
|
||
Namco (column B): I've heard (but not extensively tested) that this determines what
|
||
|
||
animation file is generated for a monster. (Nefarius: infact this is controlled by the token column in MonType.txt - not this column.)
|
||
|
||
Type (column C): Identifies monster by type.
|
||
|
||
Discriptor (column D): Short comment to describe any special or unusual attribute of this
|
||
|
||
monster. For example, all the giant maggot monsters can lay eggs, so that ability is listed
|
||
|
||
in this column beside their name.
|
||
|
||
Base ID (column E): A simple number that identifies what type of enemy this is. All
|
||
|
||
monsters of the same type generally have the same ID. This ID seems to determine what
|
||
|
||
kind of abilities or skills the game generates for that monster when it appears in the game.
|
||
|
||
For example, you may have noticed the monster entries for the Rogue Scout, Rogue
|
||
|
||
Hireling, and Rogue Town. They each have different ID's because they have some
|
||
|
||
different behavior. The Rogue Town monsters are the rogues in the Act I town who
|
||
|
||
simply stand there. A Rogue Scout and Rogue Hireling will move around and shoot
|
||
|
||
nearby monsters, but the Rogue Hireling seems different because it seems to reference
|
||
|
||
other files besides this monstats.txt to get all of its abilities (such as randomly generated
|
||
|
||
levels and magic arrow attacks). Changing these ID's causes the game to expect later
|
||
|
||
columns to have specific things set for them (like certain skills), so be aware of this if you
|
||
|
||
decide to go manipulating these numbers.
|
||
|
||
Spawned (column F): This value is set for zero or one for every monster. A one means
|
||
|
||
that monster can be randomly generated in a level. A zero means that monster can't. If
|
||
|
||
you want monsters like bosses to appear in areas other than they normally do (like the
|
||
|
||
Cow Level) then set this value to one. In part two, I'll describe what else needs to be
|
||
|
||
done to get that enemy to appear in the level of your choosing.
|
||
|
||
Beta (column G): Determines if the monster appeared in the beta version of the game.
|
||
|
||
Seems to be only for reference.
|
||
|
||
Code (column H): Another identifier for a monster along with Base ID. (Nefarius: controlls from what token-folder the palshift.dat is picked.)
|
||
|
||
Client Only (column I) and NoMap (column J): These are set at either zero or one. Not
|
||
|
||
exactly sure what they do, but every monster either has both set to zero or both set to one.
|
||
|
||
Only the little critters that appear running around (bats, rats, scorpions, etc.) have this set.
|
||
|
||
It seems to be special settings for monsters that don't do much more than act as scenery.
|
||
|
||
Size X, Size Y, Height, Overlay Height (columns K-N): Determines the physical
|
||
|
||
dimentions of the monster. (Nefarius: these columns function as for 1.10+ [MonStats2.txt])
|
||
|
||
Velocity (column O): The walking speed of the monster.
|
||
|
||
Run (column P): The running speed of the monster. There's a later column that controls
|
||
|
||
if the monster has the ability to run at all. If it doesn't, this column is unused for that
|
||
|
||
monster.
|
||
|
||
Rarity (column Q): Seems to control frequency of appearance. (Nefarius: not used prior to 1.10)
|
||
|
||
Level, Level(N), Level(H) (columns R-T): Determines what level this monster is on in
|
||
|
||
each difficulty.
|
||
|
||
Melee Rng (column U): Determines the reach of a monster's melee attack. The higher
|
||
|
||
the value, the further distance a monster can hit you with its melee attack.
|
||
|
||
Min Grp (column V): Determines the minimum number of monsters of this type that are
|
||
|
||
spawned at a time. You've noticed that some monsters (like cows) appear in larger
|
||
|
||
groups than others. Most monsters have this set around 1 to 3. Hell Bovines have it set
|
||
|
||
at 5. Increase this number to make larger minimum monster groups.
|
||
|
||
Max Grp (column W): Determines the maximum number of monsters of this type that
|
||
|
||
are spawned at a time. Make sure this value is the same or higher than Min Grp if you
|
||
|
||
decide to change these values. Most monsters have this column set around 2 to 4. Hell
|
||
|
||
Bovines have it set at 10.
|
||
|
||
(Nefarius: pre 1.10 it was impossible to modify which components a monster has, it was handled by a hardcoded table - the columns below are used after that table has been loaded, and thus serve no real purpose. )
|
||
|
||
HD (column X): Stands for head. Not sure of its significance. I think it has something to
|
||
|
||
do with wheather or not that enemy can have something equipted on its head.
|
||
|
||
TR (column Y): Stands for torso.
|
||
|
||
LG (column Z): Stands for legs.
|
||
|
||
RA (column AA): Unknown. (Nefarius: right arm )
|
||
|
||
LA (column AB): Unknown.(Nefarius: left arm )
|
||
|
||
RH (column AC): Unknown.(Nefarius: right hand )
|
||
|
||
LH (column AD): unknown.(Nefarius: left hand )
|
||
|
||
SH (column AE): Stands for shield. I think it determines if the monster can equip a
|
||
|
||
shield or not.
|
||
|
||
S1 (column AF): Some kind of setting for specials. Not sure what it means. (Nefarius: overlay 1)
|
||
|
||
S2 (column AG): unknown(Nefarius: overlay 2)
|
||
|
||
S3 (column AH): unknown(Nefarius: overlay 3)
|
||
|
||
S4 (column AI): unknown(Nefarius: overlay 4)
|
||
|
||
S5 (column AJ): unknown(Nefarius: overlay 5)
|
||
|
||
S6 (column AK): unknown(Nefarius: overlay 6)
|
||
|
||
S7 (column AL): unknown(Nefarius: overlay 7)
|
||
|
||
S8 (column AM): unknown(Nefarius: overlay 8)
|
||
|
||
TotalPieces (AN): unknown
|
||
(Nefarius: number of components)
|
||
|
||
SpawnComponets(AO): Unknown, but every monster has it set to zero, so it's probably
|
||
|
||
not important.
|
||
|
||
BaseW (AP): Base weapon that the monster carries when it appears. Several monsters
|
||
|
||
have an hth listed in this column. This means either the monster uses no weapon, or the
|
||
|
||
weapon it uses is not referenced in this file (the rogue scouts and hirelings have hth set
|
||
|
||
here).(Nefarius: back in classic changing this allowed you to make necro skeletons use a bow etc, never featured in a mod, but doable.)
|
||
|
||
AIParam 1-AIParam 5 (columns AQ-AY): These columns determine the AI parameters
|
||
|
||
for the monsters. The comment field after some entries give a description of what the AI
|
||
|
||
parameter causes the monster to do.
|
||
|
||
ModeDH (column AZ): This is set to one if the monster can die. It's set to zero if it
|
||
|
||
can't. Some monsters, like rogues or other hirelings that appear in town may have this
|
||
|
||
set at zero. You can set it to one without causing any problems, but to make that monster
|
||
|
||
actually killable you also have to set a couple of other columns that appear later.
|
||
|
||
ModeN (column BA): unknown. (Nefarius: neutral)
|
||
|
||
ModeW(column BB): Determines if the monster can walk or move. One means yes, zero
|
||
|
||
means no.
|
||
|
||
ModeGH(column BC): GH stands for get hit. This column determines if a monster can
|
||
|
||
be attacked. One means yes; zero means no.
|
||
|
||
ModeA1(column BD): Determines if the monster has a physical attack (usually melee
|
||
|
||
but not necessarily). One means yes; zero means no.
|
||
|
||
ModeA2(column BE): Determines if the monster has a second physical attack.
|
||
|
||
ModeB (column BF): Determines if a monster can block a physical attack
|
||
|
||
ModeC (column BG): Seems to determine if a monster casts spells or not.
|
||
|
||
ModeS1-ModeS4 (column BH-BL): unknown(Nefarius: Skill1 to Skill4 anims)
|
||
|
||
ModeDD (column BM): Another column that determines if a monster can die or not. As
|
||
|
||
usual, one means yes; zero means no. (Nefarius: has corpse, yes/no)
|
||
|
||
ModeKB (column BN): Determines if a monster can be knocked back by certain attacks.
|
||
|
||
ModeSQ (column BO): Some kind of sequence field. Not sure what it controls. (Nefarius: can use skill sequence yes/no)
|
||
|
||
ModeRN (column BP): Determines if a monster can run or not.
|
||
|
||
ElMode (column BQ): Some kind of setting for an element attached to a monster that
|
||
|
||
used when it attacks you.
|
||
|
||
Eltype (column BR): The type of element associated with that monster. An example
|
||
|
||
would be the Claw Vipers who have the ability to freeze a character when they attack
|
||
|
||
them. Their element type is cold.
|
||
|
||
ElOver (column BS): unknown (Nefarius: display an overlay when using element)
|
||
|
||
ElPct (column BT): Percent chance that the particular element will take effect when the
|
||
|
||
monster attacks.
|
||
|
||
ElMinD (column BU): Minimum damage caused by the elemental attack.
|
||
|
||
ElMaxD (column BV): Max damage caused by the elemental attack.
|
||
|
||
ElDur (column BW): Duration that the elemental attack has affect over the targeted
|
||
|
||
character. Cold and Poison attacks have something set in this column. The actual
|
||
|
||
duration of this attack is (number in column / 25= #seconds element has effect).
|
||
|
||
(Nefarius: the following columns are missile indexes, FFFF = no missile)
|
||
|
||
MissA1 (column BX): Not sure beyond that it has some association with an enemy's first
|
||
|
||
physical attack.
|
||
|
||
MissA2 (column BY): Has something to do with enemy's second attack.
|
||
|
||
MissS1 (column BZ): unknown
|
||
|
||
MissS2 (column CA): unknown
|
||
|
||
MissS3 (column CB): unknown
|
||
|
||
MissS4 (column CC): unknown
|
||
|
||
MissC (column CD): unknown
|
||
|
||
MissSQ (column CE): Somehow relates to whatever a monster's sequence is.
|
||
|
||
A1Move (column CF): unknown
|
||
|
||
A2Move (column CG): unknown
|
||
|
||
S1Move (column CH): unknown
|
||
|
||
S2Move (column CI): unknown
|
||
|
||
S3Move (column CJ): unknown
|
||
|
||
S4Move (column CK): unknown
|
||
|
||
Cmove (column CL): Not set for any monster, so doesn't seem to be used.
|
||
|
||
Align (colimn CM): This determines if a monster is an enemy or an ally. You can have a
|
||
|
||
lot of fun with this column. Set it to one, and that monster will fight other monsters and
|
||
|
||
not attack you. Set it to zero to make any monster an enemy.
|
||
|
||
IsMelee (column CN): Determines if the monster is a melee fighter. (Nefarius: spawn with multi-shot? yes/no)
|
||
|
||
IsSel (column CO): Determines if the monster is 'selectable.' What that means is, if it's
|
||
|
||
set to one then moving the cursor over that monster's body will cause his/her name to
|
||
|
||
display. It will also allow you to target a monster with attacks by moving the mouse
|
||
|
||
cursor over it.
|
||
|
||
IsSel2 (column CP): Not sure what this one does. Only a few NPC's have it set though.
|
||
|
||
NeverSel (column CQ): This determines if the monster can not be selected. It's basically
|
||
|
||
the opposite of IsSel. In fact, if this column is set to one for a monster, than even if you
|
||
|
||
set IsSel to one, you still can't highlight that monster by moving the mouse over it.
|
||
|
||
CourpseSel (column CR): This determines if the monster's courpse can be selected for
|
||
|
||
certain spells after it dies. Examples of spells are, Raise Skeleton, Corpse Explosion,
|
||
|
||
Find Potion, and Grim Ward. Set it to one to allow a character to use this skill on that
|
||
|
||
dead monster. You may notice that the Abyss Knight in Act 4 can have some courpse
|
||
|
||
selected spells cast on it, but a Necromancer can't revive it. There's another field that
|
||
|
||
controls that. It appears towards the end of the file.
|
||
|
||
IsAtt (column CS): This determines if the monster can be attacked.
|
||
|
||
IsNPC (column CT): Determines if the monster is an NPC or not.
|
||
|
||
IsCritter (column CU): Determines if the monster is a critter. Critters are those little
|
||
|
||
crawling monsters like scorpions and rats.
|
||
|
||
InTown (column CV): Determines if the monster can appear in or enter a town. Set it to
|
||
|
||
one for an enemy monster and it'll walk right into town to chase you. It won't be able to
|
||
|
||
attack you in town though.
|
||
|
||
Bleed (column CW): Determines if the monster bleeds when you attack it.
|
||
|
||
Shadow (column CX): Determines if the monster casts a shadow.
|
||
|
||
Light (column CY): This determines how much of a light radius the monster creates
|
||
|
||
around him. The higher the number, the greater the light it creates.
|
||
|
||
NoUniqueShift (column CZ): unknown (Nefarius: prevent bosses from using RandTransforms.dat)
|
||
|
||
CompositeDeath (column DA): unknown (Nefarius: death anim composed of more then one component.)
|
||
|
||
Skill1 (column DB): This is the first skill that a monster possesses. You can look in
|
||
|
||
skills.txt to see a full listing of all skills in the game. Each skill has an ID number. That
|
||
|
||
id number is what appears in this file. One thing to note is that changing the skill number
|
||
|
||
in this column does not seem to affect what skill the monster actually possesses. I think
|
||
|
||
the skill number is listed here just for reference, and the actual monster's skills is
|
||
|
||
determined by its ID number.
|
||
|
||
Skill1Seq (column DC): Some kind of sequence involved with a skill. I haven't messed
|
||
|
||
with this field.
|
||
|
||
Skill1Lvl (column DD): What skill level the first skill is on. Monsters have levels
|
||
|
||
associated with their skills just like characters do. Changing this value will change how
|
||
|
||
strong that skill is for the monster.
|
||
|
||
Skill2-Skill5, Skill2Seq-Skill5Seq, Skill2Lvl-Skill5Lvl (columns DE-DP): Same as the
|
||
|
||
fields for the first skill. They just affect the 2nd, 3rd, 4th, and 5th skills a monster has.
|
||
|
||
LightR: (column DQ): I haven't messed with this one, but I imagine it stands for light
|
||
|
||
red, and affects the color of the monster.
|
||
|
||
LightG: (column DR): Stands for light green.
|
||
|
||
LightB: (column DS): Light blue.
|
||
|
||
Damage Resist (column DT): Determines what percentage of a character's attack does
|
||
|
||
not hurt the monster. For example, if you hit the monster for 200 points of damage, and
|
||
|
||
the monster had a damage resist of 10, then the monster would lose 180 hit points.
|
||
|
||
Magic Resist (Column DU): Determines what percentage of magic damage does not
|
||
|
||
affect the monster. I'm not sure if magic resistance works as a general resistance towards
|
||
|
||
all magic (including poison, fire, lightning, and cold) or just a resistance to cover all
|
||
|
||
forms of magic other than the elemental ones. For example, resistance against an attack
|
||
|
||
like bone spear probably falls under this category.
|
||
|
||
Fire Resist (Column DV): Determines what percentage of fire attacks a monster ignores.
|
||
|
||
Lightning Resist (Column DW): Determines what percentage of lightning attacks the
|
||
|
||
monster ignores.
|
||
|
||
Cold Resist (Column DX): Determines what percentage of cold attacks the monster
|
||
|
||
ignores.
|
||
|
||
Poison Resist (Column DY): Determines what percentage of poison attacks a monster
|
||
|
||
ignores.
|
||
|
||
DamageResist(N) (Column DZ): Determines a monster's damage resistance for
|
||
|
||
Nightmare difficulty.
|
||
|
||
MagicResist(N) (Column EA): Magic resist for Nightmare.
|
||
|
||
FireResist(N) (Column EB): Fire resist for Nightmare.
|
||
|
||
LightningResist(N) (Column EC): Lightning resist for Nightmare.
|
||
|
||
ColdResist(N) (Column ED): Cold resist for Nightmare.
|
||
|
||
PoisonResist(N): (Column EE): Poison Resist for Nightmare.
|
||
|
||
(Columns EF-EK): Resistances for Hell difficulty.
|
||
|
||
DamageRegen (Column EL): Determines the rate at which a monster recovers hit points.
|
||
|
||
this is similer to the life replenish ability some magic items have.
|
||
|
||
eLUndead (Column EM): The first of two columns that can determines if a monster is
|
||
|
||
undead. Basic undead like skeletons and mummies have this column set. Wheather or
|
||
|
||
not a monster is undead will affect how much damage certain weapons do against it.
|
||
|
||
eHUndead (Column EN): The second undead field. I'm not sure what the difference is
|
||
|
||
between this one and the first one, but the undead who have this field set tend to be the
|
||
|
||
more magically oriented undead like Vampires, Greater Mummies, and Mephisto.
|
||
|
||
eDemon (Column EO): Determines if the monster is a demon. Again, this will determine
|
||
|
||
how much damage certain weapons do against these monsters.
|
||
|
||
eMagicUsing (Column EP): Determines if the monster is a spell caster.
|
||
|
||
eLarge (Column EQ): Determines if the monster is classified as 'large.' This won't
|
||
|
||
affect how the monster appears on screen. It again affects damage obtained by certain
|
||
|
||
weapons.
|
||
|
||
eSmall (Column ER): Classifies a monster as small.
|
||
|
||
eFlying (Column ES): Classifies a monster as flying. I don't know if setting this column
|
||
|
||
to one for a monster that has it at zero will actually give the monster the ability to fly (i.e.
|
||
|
||
walk over walls or rivers) or just affect how much damage weapons do against them.
|
||
|
||
eOpensDoors (Column ET): Determines if a monster can open doors or not.
|
||
|
||
eSpawnCol (Column EU): unknown (Nefarius: how the unit is spawned: 0 = use m1-25 columns, 1 = DS1 generated only, 2 = use s1-25 columns)
|
||
|
||
eBoss (Column EV): Determines if an enemy is classified as a boss (Duriel, Diablo, etc.).
|
||
|
||
This field is usually best left alone unless you want to make clones of bosses (more on
|
||
|
||
that later). Making an enemy a boss tends to crash the game when you kill it. You'll get
|
||
|
||
a message along the lines of 'error, boss not in table.' I don't know where this table it
|
||
|
||
refers to is located.
|
||
|
||
PixHeight (Column EW): Not sure it does anything since changing it doesn't change
|
||
|
||
how tall or short a monster appears. (Nefarius: overlay offset)
|
||
|
||
Interact (Column EX): You've noticed throughout the game that moving the mouse
|
||
|
||
corsor over someone displays differently for different monsters. More specifically,
|
||
|
||
moving the cursor over a monster displays its name inside a life bar while moving it over
|
||
|
||
a townsperson will display its name in white. This column determines which appears.
|
||
|
||
Set to zero to show the name inside the life bar. set to one to display the name in white.
|
||
|
||
MinHP (Column EY): The smallest number of hitpoints a monster can have when it's
|
||
|
||
generated in Normal difficulty.
|
||
|
||
MaxHP (Column EZ): The largest number of hitpoints a monster can have when it's
|
||
|
||
generated in Normal difficulty.
|
||
|
||
AC (Column FA): This is the enemy's defense for Normal difficulty. The higher it is,
|
||
|
||
the harder it is to hit the monster.
|
||
|
||
EXP (Column FB): How much exp you get from killing this monster in Normal
|
||
|
||
Difficulty.
|
||
|
||
ToBlock (Column FC): This determines the percentage chance a monster has to block an
|
||
|
||
attack (assuming it's capable of blocking an attack). One thing to keep in mind, is that
|
||
|
||
this number sets its blocking ability for all three difficulties.
|
||
|
||
A1MinD (Column FD): Determines the minimum amount of damage the monster does
|
||
|
||
with its first physical attack.
|
||
|
||
A1MaxD (Column FE): Determines the maximum amount of damage the monster does
|
||
|
||
with its first physical attack.
|
||
|
||
A1ToHit (Column FF): Determines the attack rating the monster has with its first hysical
|
||
|
||
attack. the higher it is, the more likely it is to hit someone with this attack.
|
||
|
||
A2MinD (Column FG): Determines the minimum damage of the monster's second
|
||
|
||
physical attack (if it has one).
|
||
|
||
A2MaxD (Column FH): Determines the max damage of a monster's second physical
|
||
|
||
attack in Normal difficulty.
|
||
|
||
A2ToHit (Column FI): Determines the attack rating of the monster's second physical
|
||
|
||
attack.
|
||
|
||
S1MinD (Column FJ): Determines the min damage done by a special attack. This field is
|
||
|
||
used mostly by traps.
|
||
|
||
S1MaxD (Column FK): Determines the max damage done by a special attack.
|
||
|
||
S1ToHit (Column FL): Determines the attack rating of a special attack.
|
||
|
||
MinHP(N) (Column FM): The smallest number of hitpoints a monster can have when it's
|
||
|
||
generated in Nightmare difficulty.
|
||
|
||
MaxHP(N) (Column FN): The largest number of hitpoints a monster can have when it's
|
||
|
||
generated in Nightmare difficulty.
|
||
|
||
AC(N) (Column FO): This is the enemy's defense for Nightmare difficulty. The higher
|
||
|
||
it is, the harder it is to hit the monster.
|
||
|
||
EXP(N) (Column FP): How much exp you get from killing this monster in Nightmare
|
||
|
||
Difficulty.
|
||
|
||
A1MinD(N) (Column FQ): Determines the minimum amount of damage the monster
|
||
|
||
does with its first physical attack.
|
||
|
||
A1MaxD(N) (Column FR): Determines the maximum amount of damage the monster
|
||
|
||
does with its first physical attack.
|
||
|
||
A1ToHit(N) (Column FS): Determines the attack rating the monster has with its first
|
||
|
||
hysical attack. the higher it is, the more likely it is to hit someone with this attack.
|
||
|
||
A2MinD(N) (Column FT): Determines the minimum damage of the monster's second
|
||
|
||
physical attack (if it has one).
|
||
|
||
A2MaxD(N) (Column FU): Determines the max damage of a monster's second physical
|
||
|
||
attack in Nightmare difficulty.
|
||
|
||
A2ToHit(N) (Column FV): Determines the attack rating of the monster's second
|
||
|
||
physical attack.
|
||
|
||
S1MinD(N) (Column FW): Determines the min damage done by a special attack. This
|
||
|
||
field is used mostly by traps.
|
||
|
||
S1MaxD(N) (Column FX): Determines the max damage done by a special attack.
|
||
|
||
S1ToHit(N) (Column FY): Determines the attack rating of a special attack.
|
||
|
||
(Columns FZ-GL): Monster stats for hell difficulty.
|
||
|
||
TreasureClass1-4 (Columns GM-GP): The numbers in the treasure class fields determine
|
||
|
||
what kind of items monsters drop when you kill them. You can see what these fields are
|
||
|
||
by looking in TreasureClasses.txt and looking at the column numbers. The number listed
|
||
|
||
in the monstats.txt file is the row of the file in TreasureClasses.txt – 1 (I think).
|
||
|
||
TreasureClass1-4(N) (Columns GQ-GT): Determines the items a monster drops in
|
||
|
||
nightmare difficulty.
|
||
|
||
TreasureClass1-4(H) (Columns GU-GX): Determins the items a monster drops in hell
|
||
|
||
difficulty.
|
||
|
||
SpawnPctBonus (Column GY): This is a fun column to play around with. This column
|
||
|
||
determines any percentage bonuses to a monster's chances of dropping an item when you
|
||
|
||
kill it. Set it to something around 100, and they'll drop items like mad (and they'll often
|
||
|
||
be magical).
|
||
|
||
Soft (Column GZ): unknown (Nefarius: soft or hard skinned foe.)
|
||
|
||
Heart (Column HA): unknown, but every monster has it set to xxx. (Nefarius: set to an item code, the monster will drop this item if MonItemPercent.txt is edited)
|
||
|
||
BodyPart (Column HB): Unknown, but every monster has it set to xxx. (Nefarius: set to an item code, the monster will drop this item if MonItemPercent.txt is edited)
|
||
|
||
Killable (Column HC): The last column that determines if a monster can be killed.
|
||
|
||
Almost everything has this column set.
|
||
|
||
Switch (Column HD): Remember when I said earlier that the ability of Reveive to work
|
||
|
||
on a monster was set by something other than the CourpseSel solumn? Well, this is that
|
||
|
||
column. Set to one to make Revive work on this enemy's courpse. Set to zero to make it
|
||
|
||
not work.
|
||
|
||
Restore (Column HE): unknown
|
||
|
||
Never Count (Column HF): unknown
|
||
|
||
Hit Class (Column HG): unknown (Nefarius: what hitclass effect is used when it hits something)
|
||
|
||
SplEndDeath (Column HH): unknown (Nefarius: as for all subsequent versions, just that the absence of minion columns makes this here useless)
|
||
|
||
SplGetModeChart (Column HI): unknown
|
||
|
||
SplEndGeneric (Column HJ): unknown
|
||
|
||
SplClientEnd (Column HK): unknown
|
||
|
||
DeadCollision (Column HL): Determines if an enemy's courpse will block a character's
|
||
|
||
path. An example is Duriel's courpse which can't be walked over when you kill him.
|
||
|
||
UnflatDead (Column HM): unknown
|
||
|
||
BloodLocal (Cloumn HN): unknown
|
||
|
||
DeathDamage (Column HO): Haven't tested, but it probably determines how much
|
||
|
||
damage a monster does when it dies. (Nefarius: boolean: does damage on death yes/no)
|
||
|
||
PetIgnore (Column HP): Set to one to make a monster fighting for you (Golem, Valkerie,
|
||
|
||
etc.) never attack it.
|
||
|
||
(Nefarius: the below work as for 1.10+)
|
||
|
||
NoGfxHitTest (Column HQ): unknown
|
||
|
||
HitTestTop (Column HR): unknown
|
||
|
||
HitTestLeft (Column HS): unknown
|
||
|
||
HitTestWidth (column HT): unknown
|
||
|
||
HitTestHeight (Column HU): unknown
|
||
|
||
Part II:
|
||
|
||
Trick One: Make any monster appear in any area
|
||
|
||
You'll need to use levels.txt for this one as well. If you're looking at monstats.txt using
|
||
|
||
a spreedsheet program of somekind, notice that the rows are numbered. These numbers-2
|
||
|
||
actually give you the monster number for each monster in the game. For example, let's
|
||
|
||
look at Hell Bovines (cows). They're on row 393. The monster number for them is 391
|
||
|
||
(393-2=391).
|
||
|
||
Now open up levels.txt. Scroll left until you see some columns labeled M1, M2, M3,
|
||
|
||
etc. You'll see numbers under these columns. These are the monsters that appear in
|
||
|
||
these levels. If you look at the entry for the secret cow level you'll notice 391 listed in
|
||
|
||
these columns. To the left of the M1 column is the column that determines how many
|
||
|
||
different monsters can appear in this level. If you add an entry to the M columns, make
|
||
|
||
sure you also change the value in the other column.
|
||
|
||
If you want to make a Boss monster like Diablo, Blood Raven or the Summoner appear,
|
||
|
||
there's one other thing you need to change. Go to the Spwaned column (column F) in
|
||
|
||
monstats.txt file and make the column entry for the monster you want to appear a one.
|
||
|
||
Trick Two: Cloning a Monster
|
||
|
||
This trick is useful if you want to spawn a Boss monster, but you think the boss is too
|
||
|
||
hard to fight as a regular enemy. It's also useful to do this in order to get around some of
|
||
|
||
the annoyances of killing Bosses. For example, killing a spawned Diablo will trigger the
|
||
|
||
counter that ends the game. Killing a spawned Andarial causes a massive explosion that
|
||
|
||
kills every other monster within several screens of her. A cloned monster will usually not
|
||
|
||
carry over any special death animation with it.
|
||
|
||
To actually clone a monster, open up both the monstats.txt file and the file name
|
||
|
||
montypes.txt. For my example, I'll clone Diablo.
|
||
|
||
-First go to the entry for Diablo in monstats.txt (Row 245).
|
||
|
||
-Copy that entire row.
|
||
|
||
-Now go to the entry labeled Diablo Clone (Row 335).
|
||
|
||
-Paste the row you copied earlier over this row.
|
||
|
||
-Set the Spawned entry (Column F) to one if you haven't already.
|
||
|
||
-Set the eBoss entry (Column EV) to zero. If you leave it at one, the game will crash
|
||
|
||
when you kill this clone.
|
||
|
||
-Now go into montypes.txt
|
||
|
||
-Find Diablo's entry (also row 245).
|
||
|
||
-Copy that entire row.
|
||
|
||
-Find the Diablo Clone entry (Row 335).
|
||
|
||
-Paste what you copied into that row.
|
||
|
||
And that's it. Go back through and change the stats for you're cloned Diablo if you'd
|
||
|
||
like. If you know how to work with string.tbl, you can even give your new Diablo clone
|
||
|
||
a different name by inserting it into the string.tbl file and then typing its name in the class
|
||
|
||
column in monstats.txt. One thing to note is that sometimes if you copy a large monster
|
||
|
||
into another spot, that clone may not display correctly. For example, copying Diablo to
|
||
|
||
somewhere other than the Diablo Clone entry may make your new Diablo appear without
|
||
|
||
a body, or he may even be invisible. It's best to use on of the unused rows in the
|
||
|
||
monstats.txt file to create your clones (there are at least 20 of them, so don't worry about
|
||
|
||
running out unless you're really imaganitive). Do not place your copied monster at the
|
||
|
||
end of the monstats.txt file after the last monster entry. The game will crash if you do.
|
||
|
||
Trick 3: Kill Jar-Jar!
|
||
|
||
Okay, so you're not really killing the Star Wars Jar-Jar, but you may have noticed that
|
||
|
||
the namco for Kaleen in the monstats.txt file lists Jar-Jar. Well, Kaleen's pretty annoying
|
||
|
||
too ('you may not pass' 'you may not pass' blah blah blah). While I don't know how to
|
||
|
||
make attacks work in town, you can make the character killable and then spawn him in
|
||
|
||
some other area of the game. Here's what to do, and this will work on other characters
|
||
|
||
that look like hirelings in the game.
|
||
|
||
-Set ModeDH (Column BA) to one if it isn't set already.
|
||
|
||
-Set ModeGH (Column BD) to one if it isn't already.
|
||
|
||
-Set ModeDD (Column BM) to one.
|
||
|
||
-Set Align (Column CM) to zero.
|
||
|
||
-Make sure the IsSel entry (Column CO) is set to one.
|
||
|
||
-Make sure NeverSel (Column CR) is set to zero.
|
||
|
||
-Set IsAtt (Column CS) is set to one.
|
||
|
||
-Set Interact (Column EX) to zero.
|
||
|
||
-Make sure Killible (Column HC) is set to one.
|
||
|
||
And there you have it. You can try this on other NPC's as well like the guards in each
|
||
|
||
act. The game tends to crash if you use these settings to make important NPC's like Cain
|
||
|
||
or Izual killable though.
|
||
|
||
Link to this article: Select all
|
||
|
||
[url=https://d2mods.info/forum/kb/viewarticle?a=383]Knowledge Base - MonStats.txt[/url] |