Unify monster data
This commit is contained in:
parent
94e7ee9496
commit
f05ae4c19a
3 changed files with 25 additions and 14 deletions
|
|
@ -2808,10 +2808,13 @@ void SpawnItem(int m, int x, int y, BOOL sendmsg)
|
|||
GetSuperItemSpace(x, y, ii);
|
||||
itemavail[0] = itemavail[MAXITEMS - numitems - 1];
|
||||
itemactive[numitems] = ii;
|
||||
int mLevel = monster[m].MData->mLevel;
|
||||
if (!gbIsHellfire && monster[m].MType->mtype == MT_DIABLO)
|
||||
mLevel -= 15;
|
||||
if (monster[m]._uniqtype) {
|
||||
SetupAllItems(ii, idx, GetRndSeed(), monster[m].MData->mLevel, 15, onlygood, FALSE, FALSE);
|
||||
SetupAllItems(ii, idx, GetRndSeed(), mLevel, 15, onlygood, FALSE, FALSE);
|
||||
} else {
|
||||
SetupAllItems(ii, idx, GetRndSeed(), monster[m].MData->mLevel, 1, onlygood, FALSE, FALSE);
|
||||
SetupAllItems(ii, idx, GetRndSeed(), mLevel, 1, onlygood, FALSE, FALSE);
|
||||
}
|
||||
numitems++;
|
||||
if (sendmsg)
|
||||
|
|
|
|||
|
|
@ -121,11 +121,7 @@ MonsterData monsterdata[] = {
|
|||
{ 128, 2000, "Monsters\\Mage\\Mage%c.CL2", TRUE, "Monsters\\Mage\\Mage%c%i.WAV", FALSE, TRUE, "Monsters\\Mage\\Cnselgd.TRN", { 12, 1, 20, 8, 28, 20 }, { 0, 0, 0, 0, 0, 0 }, "Cabalist", 28, 30, 29, 120, 120, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 2, 110, 8, 14, 30, 0, 0, 0, 0, 0, MC_DEMON, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 7, 4929 },
|
||||
{ 128, 2000, "Monsters\\Mage\\Mage%c.CL2", TRUE, "Monsters\\Mage\\Mage%c%i.WAV", FALSE, TRUE, "Monsters\\Mage\\Cnselbk.TRN", { 12, 1, 20, 8, 28, 20 }, { 0, 0, 0, 0, 0, 0 }, "Advocate", 30, 30, 30, 145, 145, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 3, 120, 8, 15, 25, 0, 0, 0, 0, 0, MC_DEMON, IMMUNE_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 7, 4968 },
|
||||
{ 96, 386, "Monsters\\Golem\\Golem%c.CL2", TRUE, "Monsters\\Golem\\Golm%c%i.WAV", FALSE, FALSE, NULL, { 0, 16, 12, 0, 12, 20 }, { 0, 0, 0, 0, 0, 0 }, "Golem", 0, 0, 12, 1, 1, AI_GOLUM, MFLAG_CAN_OPEN_DOOR, 0, 0, 7, 1, 1, 0, 0, 0, 0, 1, MC_DEMON, 0 , 0 , 0, 0, 0 },
|
||||
#ifdef HELLFIRE
|
||||
{ 160, 2000, "Monsters\\Diablo\\Diablo%c.CL2", TRUE, "Monsters\\Diablo\\Diablo%c%i.WAV", TRUE, FALSE, NULL, { 16, 6, 16, 2, 16, 16 }, { 0, 0, 0, 0, 0, 0 }, "The Dark Lord", 50, 50, 45, 3333, 3333, AI_DIABLO, MFLAG_KNOCKBACK | MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 220, 4, 30, 60, 0, 11, 0, 0, 90, MC_DEMON, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 7, 1666 },
|
||||
#else
|
||||
{ 160, 2000, "Monsters\\Diablo\\Diablo%c.CL2", TRUE, "Monsters\\Diablo\\Diablo%c%i.WAV", TRUE, FALSE, NULL, { 16, 6, 16, 6, 16, 16 }, { 0, 0, 0, 0, 0, 0 }, "The Dark Lord", 50, 50, 30, 1666, 1666, AI_DIABLO, MFLAG_KNOCKBACK | MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 220, 4, 30, 60, 0, 11, 0, 0, 90, MC_DEMON, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 7, 31666 },
|
||||
#endif
|
||||
{ 160, 2000, "Monsters\\Diablo\\Diablo%c.CL2", TRUE, "Monsters\\Diablo\\Diablo%c%i.WAV", TRUE, FALSE, NULL, { 16, 6, 16, 2, 16, 16 }, { 0, 0, 0, 0, 0, 0 }, "The Dark Lord", 50, 50, 45, 3333, 3333, AI_DIABLO, MFLAG_KNOCKBACK | MFLAG_SEARCH | MFLAG_CAN_OPEN_DOOR, 3, 220, 4, 30, 60, 0, 11, 0, 0, 90, MC_DEMON, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 7, 31666 },
|
||||
{ 128, 1060, "Monsters\\DarkMage\\Dmage%c.CL2", TRUE, "Monsters\\DarkMage\\Dmag%c%i.WAV", FALSE, FALSE, NULL, { 6, 1, 21, 6, 23, 18 }, { 0, 0, 0, 0, 0, 0 }, "The Arch-Litch Malignus", 40, 41, 30, 160, 160, AI_COUNSLR, MFLAG_CAN_OPEN_DOOR, 3, 120, 8, 20, 40, 0, 0, 0, 0, 70, MC_DEMON, RESIST_MAGIC | RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 7, 4968 },
|
||||
{ 188, 800, "Monsters\\Fork\\Fork%c.CL2", FALSE, "Monsters\\newsfx\\HBoar%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 15, 6, 16, 0 }, { 2, 0, 0, 0, 0, 0 }, "Hellboar", 32, 35, 23, 80, 100, AI_SKELSD, MFLAG_KNOCKBACK | MFLAG_SEARCH , 2, 70, 7, 16, 24, 0, 0, 0, 0, 60, MC_DEMON, 0 , RESIST_FIRE | RESIST_LIGHTNING , 0, 3, 750 },
|
||||
{ 64, 305, "Monsters\\Scorp\\Scorp%c.CL2", FALSE, "Monsters\\newsfx\\Stingr%c%i.WAV", FALSE, FALSE, NULL, { 10, 10, 12, 6, 15, 0 }, { 2, 0, 0, 0, 0, 0 }, "Stinger", 32, 35, 22, 30, 40, AI_SKELSD, 0 , 3, 85, 8, 1, 20, 0, 0, 0, 0, 50, MC_ANIMAL, 0 , RESIST_LIGHTNING , 0, 1, 500 },
|
||||
|
|
@ -479,11 +475,9 @@ UniqMonstStruct UniqMonst[] = {
|
|||
{ MT_RBLACK, "Lachdanan", "BHKA", 14, 500, AI_LACHDAN, 3, 0, 0, 0 , 0, 0, 0, TEXT_VEIL9 },
|
||||
{ MT_BTBLACK, "Warlord of Blood", "GENERAL", 13, 850, AI_WARLORD, 3, 35, 50, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 0, 0, 0, TEXT_WARLRD9 },
|
||||
{ MT_CLEAVER, "The Butcher", "GENRL", 0, 220, AI_CLEAVER, 3, 6, 12, RESIST_FIRE | RESIST_LIGHTNING | IMMUNE_NULL_40, 0, 0, 0, 0 },
|
||||
#ifdef HELLFIRE
|
||||
{ MT_HORKDMN, "Hork Demon", "GENRL", 19, 300, AI_HORKDMN, 3, 20, 35, RESIST_LIGHTNING , 0, 0, 0, 0 },
|
||||
{ MT_DEFILER, "The Defiler", "GENRL", 20, 480, AI_SKELSD, 3, 30, 40, RESIST_MAGIC | RESIST_FIRE | IMMUNE_LIGHTNING , 0, 0, 0, 0 },
|
||||
{ MT_NAKRUL, "Na-Krul", "GENRL", 0, 1332, AI_SKELSD, 3, 40, 50, IMMUNE_MAGIC | IMMUNE_FIRE | IMMUNE_LIGHTNING | IMMUNE_NULL_40, 3, 0, 0, 0 },
|
||||
#endif
|
||||
{ MT_TSKELAX, "Bonehead Keenaxe", "BHKA", 2, 91, AI_SKELSD, 2, 4, 10, IMMUNE_MAGIC | IMMUNE_NULL_40, 7, 100, 0, 0 },
|
||||
{ MT_RFALLSD, "Bladeskin the Slasher", "BSTS", 2, 51, AI_FALLEN, 0, 6, 18, RESIST_FIRE , 11, 45, 0, 0 },
|
||||
{ MT_NZOMBIE, "Soulpus", "GENERAL", 2, 133, AI_ZOMBIE, 0, 4, 8, RESIST_FIRE | RESIST_LIGHTNING , 0, 0, 0, 0 },
|
||||
|
|
|
|||
|
|
@ -320,7 +320,11 @@ void InitMonsterGFX(int monst)
|
|||
mtype = Monsters[monst].mtype;
|
||||
|
||||
for (anim = 0; anim < 6; anim++) {
|
||||
if ((animletter[anim] != 's' || monsterdata[mtype].has_special) && monsterdata[mtype].Frames[anim] > 0) {
|
||||
int frames = monsterdata[mtype].Frames[anim];
|
||||
if (!gbIsHellfire && mtype == MT_DIABLO && anim == 3)
|
||||
frames = 6;
|
||||
|
||||
if ((animletter[anim] != 's' || monsterdata[mtype].has_special) && frames > 0) {
|
||||
sprintf(strBuff, monsterdata[mtype].GraphicType, animletter[anim]);
|
||||
|
||||
celBuf = LoadFileInMem(strBuff, NULL);
|
||||
|
|
@ -339,7 +343,7 @@ void InitMonsterGFX(int monst)
|
|||
}
|
||||
|
||||
// TODO: either the AnimStruct members have wrong naming or the MonsterData ones it seems
|
||||
Monsters[monst].Anims[anim].Frames = monsterdata[mtype].Frames[anim];
|
||||
Monsters[monst].Anims[anim].Frames = frames;
|
||||
Monsters[monst].Anims[anim].Rate = monsterdata[mtype].Rate[anim];
|
||||
}
|
||||
|
||||
|
|
@ -347,6 +351,10 @@ void InitMonsterGFX(int monst)
|
|||
Monsters[monst].width2 = (monsterdata[mtype].width - 64) >> 1;
|
||||
Monsters[monst].mMinHP = monsterdata[mtype].mMinHP;
|
||||
Monsters[monst].mMaxHP = monsterdata[mtype].mMaxHP;
|
||||
if (!gbIsHellfire && mtype == MT_DIABLO) {
|
||||
Monsters[monst].mMinHP -= 2000;
|
||||
Monsters[monst].mMaxHP -= 2000;
|
||||
}
|
||||
Monsters[monst].has_special = monsterdata[mtype].has_special;
|
||||
Monsters[monst].mAFNum = monsterdata[mtype].mAFNum;
|
||||
Monsters[monst].MData = &monsterdata[mtype];
|
||||
|
|
@ -465,8 +473,11 @@ void InitMonster(int i, int rd, int mtype, int x, int y)
|
|||
monster[i]._mAnimLen = monst->Anims[MA_STAND].Frames;
|
||||
monster[i]._mAnimFrame = random_(88, monster[i]._mAnimLen - 1) + 1;
|
||||
|
||||
monster[i].mLevel = monst->MData->mLevel;
|
||||
if (monst->mtype == MT_DIABLO) {
|
||||
monster[i]._mmaxhp = (random_(88, 1) + (gbIsHellfire ? 3333 : 1666)) << 6;
|
||||
if (!gbIsHellfire)
|
||||
monster[i].mLevel -= 15;
|
||||
} else {
|
||||
monster[i]._mmaxhp = (monst->mMinHP + random_(88, monst->mMaxHP - monst->mMinHP + 1)) << 6;
|
||||
}
|
||||
|
|
@ -494,7 +505,6 @@ void InitMonster(int i, int rd, int mtype, int x, int y)
|
|||
monster[i]._mRndSeed = GetRndSeed();
|
||||
monster[i]._mAISeed = GetRndSeed();
|
||||
monster[i].mWhoHit = 0;
|
||||
monster[i].mLevel = monst->MData->mLevel;
|
||||
monster[i].mExp = monst->MData->mExp;
|
||||
monster[i].mHit = monst->MData->mHit;
|
||||
monster[i].mMinDamage = monst->MData->mMinDamage;
|
||||
|
|
@ -5247,9 +5257,13 @@ void PrintMonstHistory(int mt)
|
|||
if (monstkills[mt] >= 30) {
|
||||
minHP = monsterdata[mt].mMinHP;
|
||||
maxHP = monsterdata[mt].mMaxHP;
|
||||
if (!gbIsHellfire && mt == MT_DIABLO) {
|
||||
minHP -= 2000;
|
||||
maxHP -= 2000;
|
||||
}
|
||||
if (gbMaxPlayers == 1) {
|
||||
minHP = monsterdata[mt].mMinHP >> 1;
|
||||
maxHP = monsterdata[mt].mMaxHP >> 1;
|
||||
minHP >>= 1;
|
||||
maxHP >>= 1;
|
||||
}
|
||||
if (minHP < 1)
|
||||
minHP = 1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue