diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 092806a4d..16086f42f 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -1481,7 +1481,7 @@ void AddBerserk(Sint32 mi, Sint32 sx, Sint32 sy, Sint32 dx, Sint32 dy, Sint32 mi dm = dMonster[tx][ty]; dm = dm > 0 ? dm - 1 : -(dm + 1); if (dm > 3) { - if (!monster[dm]._uniqtype && monster[dm]._mAi != AI_DIABLO) { + if (monster[dm]._uniqtype == 0 && monster[dm]._mAi != AI_DIABLO) { if (monster[dm]._mmode != MM_FADEIN && monster[dm]._mmode != MM_FADEOUT) { if (!(monster[dm].mMagicRes & IMMUNE_MAGIC)) { if ((!(monster[dm].mMagicRes & RESIST_MAGIC) || (monster[dm].mMagicRes & RESIST_MAGIC) == 1 && !random_(99, 2)) && monster[dm]._mmode != MM_CHARGE) { diff --git a/Source/monster.cpp b/Source/monster.cpp index 2029b6784..862e73fe3 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1714,14 +1714,14 @@ void SpawnLoot(int i, BOOL sendmsg) MonsterStruct *Monst; Monst = &monster[i]; - if (QuestStatus(Q_GARBUD) && Monst->mName == UniqMonst[UMT_GARBUD].mName) { + if (QuestStatus(Q_GARBUD) && Monst->_uniqtype - 1 == UMT_GARBUD) { CreateTypeItem(Monst->_mx + 1, Monst->_my + 1, TRUE, ITYPE_MACE, IMISC_NONE, TRUE, FALSE); - } else if (Monst->mName == UniqMonst[UMT_DEFILER].mName) { + } else if (Monst->_uniqtype - 1 == UMT_DEFILER) { if (effect_is_playing(USFX_DEFILER8)) stream_stop(); quests[Q_DEFILER]._qlog = 0; SpawnMapOfDoom(Monst->_mx, Monst->_my); - } else if (Monst->mName == UniqMonst[UMT_HORKDMN].mName) { + } else if (Monst->_uniqtype - 1 == UMT_HORKDMN) { if (gbTheoQuest) { SpawnTheodore(Monst->_mx, Monst->_my); } else { @@ -2488,7 +2488,7 @@ BOOL M_DoTalk(int i) if (effect_is_playing(alltext[monster[i].mtalkmsg].sfxnr)) return FALSE; InitQTextMsg(monster[i].mtalkmsg); - if (monster[i].mName == UniqMonst[UMT_GARBUD].mName) { + if (monster[i]._uniqtype - 1 == UMT_GARBUD) { if (monster[i].mtalkmsg == TEXT_GARBUD1) { quests[Q_GARBUD]._qactive = QUEST_ACTIVE; quests[Q_GARBUD]._qlog = TRUE; // BUGFIX: (?) for other quests qactive and qlog go together, maybe this should actually go into the if above (fixed) @@ -2498,7 +2498,7 @@ BOOL M_DoTalk(int i) monster[i]._mFlags |= MFLAG_QUEST_COMPLETE; } } - if (monster[i].mName == UniqMonst[UMT_ZHAR].mName + if (monster[i]._uniqtype - 1 == UMT_ZHAR && monster[i].mtalkmsg == TEXT_ZHAR1 && !(monster[i]._mFlags & MFLAG_QUEST_COMPLETE)) { quests[Q_ZHAR]._qactive = QUEST_ACTIVE; @@ -2506,7 +2506,7 @@ BOOL M_DoTalk(int i) CreateTypeItem(monster[i]._mx + 1, monster[i]._my + 1, FALSE, ITYPE_MISC, IMISC_BOOK, TRUE, FALSE); monster[i]._mFlags |= MFLAG_QUEST_COMPLETE; } - if (monster[i].mName == UniqMonst[UMT_SNOTSPIL].mName) { + if (monster[i]._uniqtype - 1 == UMT_SNOTSPIL) { if (monster[i].mtalkmsg == TEXT_BANNER10 && !(monster[i]._mFlags & MFLAG_QUEST_COMPLETE)) { ObjChangeMap(setpc_x, setpc_y, (setpc_w >> 1) + setpc_x + 2, (setpc_h >> 1) + setpc_y - 2); tren = TransVal; @@ -2519,11 +2519,10 @@ BOOL M_DoTalk(int i) monster[i]._mFlags |= MFLAG_QUEST_COMPLETE; } if (quests[Q_LTBANNER]._qvar1 < 2) { - sprintf(tempstr, "SS Talk = %i, Flags = %i", monster[i].mtalkmsg, monster[i]._mFlags); // CODEFIX: no need for tempstr, app_fatal supports v_args - app_fatal(tempstr); + app_fatal("SS Talk = %i, Flags = %i", monster[i].mtalkmsg, monster[i]._mFlags); } } - if (monster[i].mName == UniqMonst[UMT_LACHDAN].mName) { + if (monster[i]._uniqtype - 1 == UMT_LACHDAN) { if (monster[i].mtalkmsg == TEXT_VEIL9) { quests[Q_VEIL]._qactive = QUEST_ACTIVE; quests[Q_VEIL]._qlog = TRUE; @@ -2533,9 +2532,9 @@ BOOL M_DoTalk(int i) monster[i]._mFlags |= MFLAG_QUEST_COMPLETE; } } - if (monster[i].mName == UniqMonst[UMT_WARLORD].mName) + if (monster[i]._uniqtype - 1 == UMT_WARLORD) quests[Q_WARLORD]._qvar1 = 2; - if (monster[i].mName == UniqMonst[UMT_LAZURUS].mName && gbIsMultiplayer) { + if (monster[i]._uniqtype - 1 == UMT_LAZURUS && gbIsMultiplayer) { quests[Q_BETRAYER]._qvar1 = 6; monster[i]._mgoal = MGOAL_NORMAL; monster[i]._msquelch = UCHAR_MAX; diff --git a/Source/objects.cpp b/Source/objects.cpp index 9b17d3201..3ea9a0ac6 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -4135,7 +4135,7 @@ void OperateBookCase(int pnum, int i, bool sendmsg) SetRndSeed(object[i]._oRndSeed); CreateTypeItem(object[i]._ox, object[i]._oy, FALSE, ITYPE_MISC, IMISC_BOOK, sendmsg, FALSE); if (QuestStatus(Q_ZHAR) - && monster[MAX_PLRS].mName == UniqMonst[UMT_ZHAR].mName + && monster[MAX_PLRS]._uniqtype - 1 == UMT_ZHAR && monster[MAX_PLRS]._msquelch == UCHAR_MAX && monster[MAX_PLRS]._mhitpoints) { monster[MAX_PLRS].mtalkmsg = TEXT_ZHAR2; diff --git a/Source/quests.cpp b/Source/quests.cpp index 79c013a44..b6fe6cd06 100644 --- a/Source/quests.cpp +++ b/Source/quests.cpp @@ -340,7 +340,7 @@ void CheckQuestKill(int m, BOOL sendmsg) } if (sendmsg) NetSendCmdQuest(TRUE, Q_BUTCHER); - } else if (monster[m].mName == UniqMonst[UMT_GARBUD].mName) { //"Gharbad the Weak" + } else if (monster[m]._uniqtype - 1 == UMT_GARBUD) { //"Gharbad the Weak" quests[Q_GARBUD]._qactive = QUEST_DONE; sfxdelay = 30; if (plr[myplr]._pClass == PC_WARRIOR) { @@ -356,7 +356,7 @@ void CheckQuestKill(int m, BOOL sendmsg) } else if (plr[myplr]._pClass == PC_BARBARIAN) { sfxdnum = PS_WARR61; } - } else if (monster[m].mName == UniqMonst[UMT_ZHAR].mName) { //"Zhar the Mad" + } else if (monster[m]._uniqtype - 1 == UMT_ZHAR) { //"Zhar the Mad" quests[Q_ZHAR]._qactive = QUEST_DONE; sfxdelay = 30; if (plr[myplr]._pClass == PC_WARRIOR) { @@ -372,7 +372,7 @@ void CheckQuestKill(int m, BOOL sendmsg) } else if (plr[myplr]._pClass == PC_BARBARIAN) { sfxdnum = PS_WARR62; } - } else if (monster[m].mName == UniqMonst[UMT_LAZURUS].mName && gbIsMultiplayer) { //"Arch-Bishop Lazarus" + } else if (monster[m]._uniqtype - 1 == UMT_LAZURUS && gbIsMultiplayer) { //"Arch-Bishop Lazarus" quests[Q_BETRAYER]._qactive = QUEST_DONE; quests[Q_BETRAYER]._qvar1 = 7; sfxdelay = 30; @@ -405,7 +405,7 @@ void CheckQuestKill(int m, BOOL sendmsg) NetSendCmdQuest(TRUE, Q_BETRAYER); NetSendCmdQuest(TRUE, Q_DIABLO); } - } else if (monster[m].mName == UniqMonst[UMT_LAZURUS].mName && !gbIsMultiplayer) { //"Arch-Bishop Lazarus" + } else if (monster[m]._uniqtype - 1 == UMT_LAZURUS && !gbIsMultiplayer) { //"Arch-Bishop Lazarus" quests[Q_BETRAYER]._qactive = QUEST_DONE; sfxdelay = 30; InitVPTriggers(); @@ -426,7 +426,7 @@ void CheckQuestKill(int m, BOOL sendmsg) } else if (plr[myplr]._pClass == PC_BARBARIAN) { sfxdnum = PS_WARR83; } - } else if (monster[m].mName == UniqMonst[UMT_WARLORD].mName) { //"Warlord of Blood" + } else if (monster[m]._uniqtype - 1 == UMT_WARLORD) { //"Warlord of Blood" quests[Q_WARLORD]._qactive = QUEST_DONE; sfxdelay = 30; if (plr[myplr]._pClass == PC_WARRIOR) {