@ -15,7 +15,7 @@ namespace devilution {
/** Contains the data related to each monster ID. */
const MonsterData MonstersData [ ] = {
// clang-format off
// mName, GraphicType, sndfile, TransFile, width, mImage, has_special, snd_special, has_trans, Frames[6], Rate[6], mMinDLvl, mMaxDLvl, mLevel, mMinHP, mMaxHP, mAi, mFlags , mInt, mHit, mAFNum, mMinDamage, mMaxDamage, mHit2, mAFNum2, mMinDamage2, mMaxDamage2, mArmorClass, mMonstClass , mMagicRes , mMagicRes2 , mSelFlag, mTreasure, mExp
// mName, GraphicType, sndfile, TransFile, width, mImage, has_special, snd_special, has_trans, Frames[6], Rate[6], mMinDLvl, mMaxDLvl, mLevel, mMinHP, mMaxHP, mAi, mFlags , mInt, mHit, mAFNum, mMinDamage, mMaxDamage, mHit2, mAFNum2, mMinDamage2, mMaxDamage2, mArmorClass, mMonstClass , mMagicRes , mMagicRes2 , mSelFlag, mTreasure, mExp
// TRANSLATORS: Monster Block start
/* MT_NZOMBIE */ { P_ ( " monster " , " Zombie " ) , " Monsters \\ Zombie \\ Zombie%c.CL2 " , " Monsters \\ Zombie \\ Zombie%c%i.WAV " , nullptr , 128 , 799 , false , false , false , { 11 , 24 , 12 , 6 , 16 , 0 } , { 4 , 1 , 1 , 1 , 1 , 1 } , 1 , 3 , 1 , 4 , 7 , AI_ZOMBIE , 0 , 0 , 10 , 8 , 2 , 5 , 0 , 0 , 0 , 0 , 5 , MonsterClass : : Undead , IMMUNE_MAGIC | IMMUNE_NULL_40 , IMMUNE_MAGIC | IMMUNE_NULL_40 , 3 , 0 , 54 } ,
/* MT_BZOMBIE */ { P_ ( " monster " , " Ghoul " ) , " Monsters \\ Zombie \\ Zombie%c.CL2 " , " Monsters \\ Zombie \\ Zombie%c%i.WAV " , " Monsters \\ Zombie \\ Bluered.TRN " , 128 , 799 , false , false , true , { 11 , 24 , 12 , 6 , 16 , 0 } , { 4 , 1 , 1 , 1 , 1 , 1 } , 2 , 4 , 2 , 7 , 11 , AI_ZOMBIE , 0 , 1 , 10 , 8 , 3 , 10 , 0 , 0 , 0 , 0 , 10 , MonsterClass : : Undead , IMMUNE_MAGIC | IMMUNE_NULL_40 , IMMUNE_MAGIC | IMMUNE_NULL_40 , 3 , 0 , 58 } ,
@ -155,7 +155,7 @@ const MonsterData MonstersData[] = {
/* MT_FLESTHNG*/ { P_ ( " monster " , " Flesh Thing " ) , " Monsters \\ Flesh \\ Flesh%c.CL2 " , " Monsters \\ newsfx \\ FleshT%c%i.WAV " , nullptr , 164 , 800 , false , true , false , { 15 , 24 , 15 , 6 , 16 , 0 } , { 1 , 1 , 1 , 1 , 1 , 1 } , 44 , 47 , 28 , 300 , 400 , AI_SKELSD , 0 , 3 , 150 , 8 , 12 , 18 , 0 , 0 , 0 , 0 , 70 , MonsterClass : : Demon , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING , 3 , 0 , 4000 } ,
/* MT_REAPER */ { P_ ( " monster " , " Reaper " ) , " Monsters \\ Reaper \\ Reap%c.CL2 " , " Monsters \\ newsfx \\ Reaper%c%i.WAV " , nullptr , 180 , 800 , false , false , false , { 12 , 10 , 14 , 6 , 16 , 0 } , { 2 , 1 , 1 , 1 , 1 , 1 } , 44 , 47 , 30 , 260 , 300 , AI_SKELSD , 0 , 3 , 120 , 8 , 30 , 35 , 0 , 0 , 0 , 0 , 90 , MonsterClass : : Demon , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING , 3 , 0 , 6000 } ,
// TRANSLATORS: Monster Block end
/* MT_NAKRUL */ { " Na-Krul " , " Monsters \\ Nkr \\ Nkr%c.CL2 " , " Monsters \\ newsfx \\ Nakrul%c%i.WAV " , nullptr , 226 , 1200 , true , true , false , { 2 , 6 , 16 , 3 , 16 , 16 } , { 0 , 0 , 0 , 0 , 0 , 0 } , 60 , 60 , 40 , 1332 , 1332 , AI_SKELSD , MFLAG_KNOCKBACK | MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR , 3 , 150 , 7 , 40 , 50 , 150 , 10 , 40 , 50 , 125 , MonsterClass : : Demon , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40 , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40 , 7 , 0 , 13333 } ,
/* MT_NAKRUL */ { P_ ( " monster " , " Na-Krul " ) , " Monsters \\ Nkr \\ Nkr%c.CL2 " , " Monsters \\ newsfx \\ Nakrul%c%i.WAV " , nullptr , 226 , 1200 , true , true , false , { 2 , 6 , 16 , 3 , 16 , 16 } , { 0 , 0 , 0 , 0 , 0 , 0 } , 60 , 60 , 40 , 1332 , 1332 , AI_SKELSD , MFLAG_KNOCKBACK | MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR , 3 , 150 , 7 , 40 , 50 , 150 , 10 , 40 , 50 , 125 , MonsterClass : : Demon , IMMUNE_MAGIC | IMMUNE_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40 , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40 , 7 , 0 , 13333 } ,
// clang-format on
} ;
@ -477,12 +477,12 @@ const UniqueMonsterData UniqueMonstersData[] = {
{ MT_ADVOCATE , P_ ( " monster " , " Arch-Bishop Lazarus " ) , " GENERAL " , 0 , 600 , AI_LAZARUS , 3 , 30 , 50 , IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_VILE13 } ,
{ MT_HLSPWN , P_ ( " monster " , " Red Vex " ) , " REDV " , 0 , 400 , AI_LAZHELP , 3 , 30 , 50 , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_VILE13 } ,
{ MT_HLSPWN , P_ ( " monster " , " Black Jade " ) , " BLKJD " , 0 , 400 , AI_LAZHELP , 3 , 30 , 50 , IMMUNE_MAGIC | RESIST_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_VILE13 } ,
{ MT_RBLACK , " Lachdanan " , " BHKA " , 14 , 500 , AI_LACHDAN , 3 , 0 , 0 , 0 , UniqueMonsterPack : : None , 0 , 0 , TEXT_VEIL9 } ,
{ MT_RBLACK , P_ ( " monster " , " Lachdanan " ) , " BHKA " , 14 , 500 , AI_LACHDAN , 3 , 0 , 0 , 0 , UniqueMonsterPack : : None , 0 , 0 , TEXT_VEIL9 } ,
{ MT_BTBLACK , P_ ( " monster " , " Warlord of Blood " ) , " GENERAL " , 13 , 850 , AI_WARLORD , 3 , 35 , 50 , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_WARLRD9 } ,
{ MT_CLEAVER , P_ ( " monster " , " The Butcher " ) , " GENRL " , 0 , 220 , AI_CLEAVER , 3 , 6 , 12 , RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_HORKDMN , P_ ( " monster " , " Hork Demon " ) , " GENRL " , 19 , 300 , AI_HORKDMN , 3 , 20 , 35 , RESIST_LIGHTNING , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_DEFILER , P_ ( " monster " , " The Defiler " ) , " GENRL " , 20 , 480 , AI_SKELSD , 3 , 30 , 40 , RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_NAKRUL , " Na-Krul " , " GENRL " , 0 , 1332 , AI_SKELSD , 3 , 40 , 50 , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_NAKRUL , P_ ( " monster " , " Na-Krul " ) , " GENRL " , 0 , 1332 , AI_SKELSD , 3 , 40 , 50 , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_TSKELAX , P_ ( " monster " , " Bonehead Keenaxe " ) , " BHKA " , 2 , 91 , AI_SKELSD , 2 , 4 , 10 , IMMUNE_MAGIC | IMMUNE_NULL_40 , UniqueMonsterPack : : Leashed , 100 , 0 , TEXT_NONE } ,
{ MT_RFALLSD , P_ ( " monster " , " Bladeskin the Slasher " ) , " BSTS " , 2 , 51 , AI_FALLEN , 0 , 6 , 18 , RESIST_FIRE , UniqueMonsterPack : : Leashed , 0 , 45 , TEXT_NONE } ,
{ MT_NZOMBIE , P_ ( " monster " , " Soulpus " ) , " GENERAL " , 2 , 133 , AI_ZOMBIE , 0 , 4 , 8 , RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
@ -491,12 +491,12 @@ const UniqueMonsterData UniqueMonstersData[] = {
{ MT_NZOMBIE , P_ ( " monster " , " Rotfeast the Hungry " ) , " ETH " , 2 , 85 , AI_SKELSD , 3 , 4 , 12 , IMMUNE_MAGIC | IMMUNE_NULL_40 , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_DFALLSD , P_ ( " monster " , " Gutshank the Quick " ) , " GTQ " , 3 , 66 , AI_BAT , 2 , 6 , 16 , RESIST_FIRE , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_TSKELSD , P_ ( " monster " , " Brokenhead Bangshield " ) , " BHBS " , 3 , 108 , AI_SKELSD , 3 , 12 , 20 , IMMUNE_MAGIC | RESIST_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_YFALLSP , " Bongo " , " BNG " , 3 , 178 , AI_FALLEN , 3 , 9 , 21 , 0 , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_YFALLSP , P_ ( " monster " , " Bongo " ) , " BNG " , 3 , 178 , AI_FALLEN , 3 , 9 , 21 , 0 , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_BZOMBIE , P_ ( " monster " , " Rotcarnage " ) , " RCRN " , 3 , 102 , AI_ZOMBIE , 3 , 9 , 24 , IMMUNE_MAGIC | RESIST_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : Leashed , 0 , 45 , TEXT_NONE } ,
{ MT_NSCAV , P_ ( " monster " , " Shadowbite " ) , " SHBT " , 2 , 60 , AI_SKELSD , 3 , 3 , 20 , IMMUNE_FIRE , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_WSKELBW , P_ ( " monster " , " Deadeye " ) , " DE " , 2 , 49 , AI_GOATBOW , 0 , 6 , 9 , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_RSKELAX , P_ ( " monster " , " Madeye the Dead " ) , " MTD " , 4 , 75 , AI_BAT , 0 , 9 , 21 , IMMUNE_MAGIC | IMMUNE_FIRE , UniqueMonsterPack : : Leashed , 0 , 30 , TEXT_NONE } ,
{ MT_BSCAV , " El Chupacabras " , " GENERAL " , 3 , 120 , AI_GOATMC , 0 , 10 , 18 , RESIST_FIRE , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_BSCAV , P_ ( " monster " , " El Chupacabras " ) , " GENERAL " , 3 , 120 , AI_GOATMC , 0 , 10 , 18 , RESIST_FIRE , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_TSKELBW , P_ ( " monster " , " Skullfire " ) , " SKFR " , 3 , 125 , AI_GOATBOW , 1 , 6 , 10 , IMMUNE_FIRE , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_SNEAK , P_ ( " monster " , " Warpskull " ) , " TSPO " , 3 , 117 , AI_SNEAK , 2 , 6 , 18 , RESIST_FIRE | RESIST_LIGHTNING , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_GZOMBIE , P_ ( " monster " , " Goretongue " ) , " PMR " , 3 , 156 , AI_SKELSD , 1 , 15 , 30 , IMMUNE_MAGIC | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
@ -564,9 +564,9 @@ const UniqueMonsterData UniqueMonstersData[] = {
{ MT_BTBLACK , P_ ( " monster " , " Steelskull the Hunter " ) , " GENERAL " , 14 , 831 , AI_SKELSD , 3 , 40 , 50 , RESIST_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_RBLACK , P_ ( " monster " , " Sir Gorash " ) , " GENERAL " , 16 , 1050 , AI_SKELSD , 1 , 20 , 60 , IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_CABALIST , P_ ( " monster " , " The Vizier " ) , " GENERAL " , 15 , 850 , AI_COUNSLR , 2 , 25 , 40 , IMMUNE_FIRE , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_REALWEAV , " Zamphir " , " GENERAL " , 15 , 891 , AI_SKELSD , 2 , 30 , 50 , IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_REALWEAV , P_ ( " monster " , " Zamphir " ) , " GENERAL " , 15 , 891 , AI_SKELSD , 2 , 30 , 50 , IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
{ MT_HLSPWN , P_ ( " monster " , " Bloodlust " ) , " GENERAL " , 15 , 825 , AI_SUCC , 1 , 20 , 55 , IMMUNE_MAGIC | IMMUNE_LIGHTNING | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_HLSPWN , " Webwidow " , " GENERAL " , 16 , 774 , AI_SUCC , 1 , 20 , 50 , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_HLSPWN , P_ ( " monster " , " Webwidow " ) , " GENERAL " , 16 , 774 , AI_SUCC , 1 , 20 , 50 , IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_SOLBRNR , P_ ( " monster " , " Fleshdancer " ) , " GENERAL " , 16 , 999 , AI_SUCC , 3 , 30 , 50 , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_NULL_40 , UniqueMonsterPack : : None , 0 , 0 , TEXT_NONE } ,
{ MT_OBLORD , P_ ( " monster " , " Grimspike " ) , " GENERAL " , 19 , 534 , AI_SNEAK , 1 , 25 , 40 , IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_NULL_40 , UniqueMonsterPack : : Leashed , 0 , 0 , TEXT_NONE } ,
// TRANSLATORS: Unique Monster Block end