From f2a917ca8ab9495b78c0264e93f3b4e9663b8d51 Mon Sep 17 00:00:00 2001 From: galaxyhaxz Date: Tue, 3 Sep 2019 19:24:59 -0500 Subject: [PATCH] InitMonster fin bexact --- Source/monster.cpp | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/Source/monster.cpp b/Source/monster.cpp index e0bbe4397..71834299c 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -403,19 +403,23 @@ void InitMonster(int i, int rd, int mtype, int x, int y) monster[i]._mfuty = y; monster[i]._moldx = x; monster[i]._moldy = y; - monster[i]._mmode = MM_STAND; monster[i]._mMTidx = mtype; + monster[i]._mmode = MM_STAND; monster[i].mName = monst->MData->mName; monster[i].MType = monst; monster[i].MData = monst->MData; monster[i]._mAnimData = monst->Anims[MA_STAND].Data[rd]; monster[i]._mAnimDelay = monst->Anims[MA_STAND].Rate; - monster[i]._mAnimCnt = random(88, monst->Anims[MA_STAND].Rate - 1); + monster[i]._mAnimCnt = random(88, monster[i]._mAnimDelay - 1); monster[i]._mAnimLen = monst->Anims[MA_STAND].Frames; - monster[i]._mAnimFrame = random(88, monst->Anims[MA_STAND].Frames - 1) + 1; + monster[i]._mAnimFrame = random(88, monster[i]._mAnimLen - 1) + 1; if (monst->mtype == MT_DIABLO) { +#ifdef HELLFIRE + monster[i]._mmaxhp = (random(88, 1) + 3333) << 6; +#else monster[i]._mmaxhp = (random(88, 1) + 1666) << 6; +#endif } else { monster[i]._mmaxhp = (monst->mMinHP + random(88, monst->mMaxHP - monst->mMinHP + 1)) << 6; } @@ -434,11 +438,14 @@ void InitMonster(int i, int rd, int mtype, int x, int y) monster[i]._mgoalvar1 = 0; monster[i]._mgoalvar2 = 0; monster[i]._mgoalvar3 = 0; + monster[i].field_18 = 0; monster[i]._pathcount = 0; + monster[i]._mDelFlag = FALSE; monster[i]._uniqtype = 0; monster[i]._msquelch = 0; - monster[i].field_18 = 0; - monster[i]._mDelFlag = FALSE; +#ifdef HELLFIRE + monster[i].mlid = 0; +#endif monster[i]._mRndSeed = GetRndSeed(); monster[i]._mAISeed = GetRndSeed(); monster[i].mWhoHit = 0; @@ -465,28 +472,39 @@ void InitMonster(int i, int rd, int mtype, int x, int y) } if (gnDifficulty == DIFF_NIGHTMARE) { - monster[i].mLevel += 15; - monster[i].mHit += 85; - monster[i].mHit2 += 85; +#ifdef HELLFIRE + monster[i]._mmaxhp = 3 * monster[i]._mmaxhp + ((gbMaxPlayers != 1 ? 100 : 50) << 6); +#else monster[i]._mmaxhp = 3 * monster[i]._mmaxhp + 64; +#endif monster[i]._mhitpoints = monster[i]._mmaxhp; + monster[i].mLevel += 15; monster[i].mExp = 2 * (monster[i].mExp + 1000); + monster[i].mHit += 85; monster[i].mMinDamage = 2 * (monster[i].mMinDamage + 2); monster[i].mMaxDamage = 2 * (monster[i].mMaxDamage + 2); + monster[i].mHit2 += 85; monster[i].mMinDamage2 = 2 * (monster[i].mMinDamage2 + 2); monster[i].mMaxDamage2 = 2 * (monster[i].mMaxDamage2 + 2); monster[i].mArmorClass += 50; } +#ifdef HELLFIRE + else +#endif if (gnDifficulty == DIFF_HELL) { - monster[i].mLevel += 30; +#ifdef HELLFIRE + monster[i]._mmaxhp = 4 * monster[i]._mmaxhp + ((gbMaxPlayers != 1 ? 200 : 100) << 6); +#else monster[i]._mmaxhp = 4 * monster[i]._mmaxhp + 192; +#endif monster[i]._mhitpoints = monster[i]._mmaxhp; - monster[i].mHit += 120; - monster[i].mHit2 += 120; + monster[i].mLevel += 30; monster[i].mExp = 4 * (monster[i].mExp + 1000); + monster[i].mHit += 120; monster[i].mMinDamage = 4 * monster[i].mMinDamage + 6; monster[i].mMaxDamage = 4 * monster[i].mMaxDamage + 6; + monster[i].mHit2 += 120; monster[i].mMinDamage2 = 4 * monster[i].mMinDamage2 + 6; monster[i].mMaxDamage2 = 4 * monster[i].mMaxDamage2 + 6; monster[i].mArmorClass += 80;