diff --git a/Source/diablo.cpp b/Source/diablo.cpp index 8a3c7f01d..08624959b 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -2140,7 +2140,7 @@ LABEL_72: //do // _LOBYTE(v19) = IncProgress(); while ( !IncProgress() ); - if ( setlevel && setlvlnum == SL_SKELKING && quests[12]._qactive == 2 ) + if ( setlevel && setlvlnum == SL_SKELKING && quests[QTYPE_KING]._qactive == 2 ) PlaySFX(USFX_SKING1); } // 525738: using guessed type int setseed; diff --git a/Source/drlg_l1.cpp b/Source/drlg_l1.cpp index f9c29074e..026cb4881 100644 --- a/Source/drlg_l1.cpp +++ b/Source/drlg_l1.cpp @@ -534,17 +534,17 @@ void __fastcall CreateL5Dungeon(int rseed, int entry) void __cdecl DRLG_LoadL1SP() { setloadflag = 0; - if ( QuestStatus(6) ) + if ( QuestStatus(QTYPE_BUTCH) ) { pSetPiece = LoadFileInMem("Levels\\L1Data\\rnd6.DUN", 0); setloadflag = 1; } - if ( QuestStatus(12) && gbMaxPlayers == 1 ) + if ( QuestStatus(QTYPE_KING) && gbMaxPlayers == 1 ) { pSetPiece = LoadFileInMem("Levels\\L1Data\\SKngDO.DUN", 0); setloadflag = 1; } - if ( QuestStatus(7) ) + if ( QuestStatus(QTYPE_BOL) ) { pSetPiece = LoadFileInMem("Levels\\L1Data\\Banner2.DUN", 0); setloadflag = 1; @@ -610,7 +610,7 @@ void __fastcall DRLG_L5(int entry) L5ClearFlags(); DRLG_L5FloodTVal(); v2 = 1; - if ( QuestStatus(13) ) + if ( QuestStatus(QTYPE_PW) ) { if ( v13 ) { @@ -623,7 +623,7 @@ void __fastcall DRLG_L5(int entry) v2 = 0; } } - if ( QuestStatus(7) ) + if ( QuestStatus(QTYPE_BOL) ) { if ( !v13 ) { @@ -966,8 +966,8 @@ int __fastcall DRLG_PlaceMiniSet(const unsigned char *miniset, int tmin, int tma DRLG_MRectTrans(sx, sy + 2, sx + 5, sy + 4); TransVal = t; - quests[13]._qtx = 2 * sx + 21; - quests[13]._qty = 2 * sy + 22; + quests[QTYPE_PW]._qtx = 2 * sx + 21; + quests[QTYPE_PW]._qty = 2 * sy + 22; } if(setview == TRUE) { diff --git a/Source/drlg_l2.cpp b/Source/drlg_l2.cpp index c4795cb2c..00ca033a7 100644 --- a/Source/drlg_l2.cpp +++ b/Source/drlg_l2.cpp @@ -780,7 +780,7 @@ void __fastcall CreateL2Dungeon(int rseed, int entry) { if ( currlevel == 7 ) { - if ( quests[8]._qactive ) + if ( quests[QTYPE_BLIND]._qactive ) goto LABEL_10; currlevel = 6; CreateL2Dungeon(glSeedTbl[6], 4); @@ -788,7 +788,7 @@ void __fastcall CreateL2Dungeon(int rseed, int entry) } if ( currlevel == 8 ) { - if ( quests[8]._qactive ) + if ( quests[QTYPE_BLIND]._qactive ) { v4 = glSeedTbl[7]; currlevel = 7; @@ -828,19 +828,19 @@ void __cdecl DRLG_LoadL2SP() char *v1; // ecx setloadflag_2 = 0; - if ( QuestStatus(8) ) + if ( QuestStatus(QTYPE_BLIND) ) { v1 = "Levels\\L2Data\\Blind2.DUN"; } else { - if ( QuestStatus(9) ) + if ( QuestStatus(QTYPE_BLOOD) ) { v1 = "Levels\\L2Data\\Blood1.DUN"; } else { - if ( !QuestStatus(14) ) + if ( !QuestStatus(QTYPE_BONE) ) return; v1 = "Levels\\L2Data\\Bonestr2.DUN"; } @@ -1665,7 +1665,7 @@ bool __cdecl CreateDungeon() v2 = 0; if ( currlevel == 5 ) { - if ( !quests[9]._qactive ) + if ( !quests[QTYPE_BLOOD]._qactive ) goto LABEL_12; v1 = 20; v0 = 14; @@ -1674,13 +1674,13 @@ bool __cdecl CreateDungeon() { if ( currlevel == 6 ) { - if ( !quests[14]._qactive ) + if ( !quests[QTYPE_BONE]._qactive ) goto LABEL_12; v12 = 10; } else { - if ( currlevel != 7 || !quests[8]._qactive ) + if ( currlevel != 7 || !quests[QTYPE_BLIND]._qactive ) goto LABEL_12; v12 = 15; } diff --git a/Source/drlg_l3.cpp b/Source/drlg_l3.cpp index 5e80e9e35..ae2aea7d7 100644 --- a/Source/drlg_l3.cpp +++ b/Source/drlg_l3.cpp @@ -522,7 +522,7 @@ void __fastcall DRLG_L3(int entry) DRLG_L3CreateBlock(x1, y1 + 12, 2, 2); DRLG_L3CreateBlock(x1, y1 + 10, 2, 3); - if ( QuestStatus(10) ) + if ( QuestStatus(QTYPE_ANVIL) ) { x2 = random(0, 10) + 10; y2 = random(0, 10); @@ -584,7 +584,7 @@ LABEL_23: goto LABEL_22; } LABEL_24: - if ( !QuestStatus(10) ) + if ( !QuestStatus(QTYPE_ANVIL) ) break; genok = DRLG_L3Anvil(); } @@ -604,7 +604,7 @@ LABEL_24: FixL3HallofHeroes(); DRLG_L3River(); - if ( QuestStatus(10) ) + if ( QuestStatus(QTYPE_ANVIL) ) { dungeon[setpc_x + 7][setpc_y + 5] = 7; dungeon[setpc_x + 8][setpc_y + 5] = 7; diff --git a/Source/drlg_l4.cpp b/Source/drlg_l4.cpp index 0c51a2994..607b5d9e0 100644 --- a/Source/drlg_l4.cpp +++ b/Source/drlg_l4.cpp @@ -298,7 +298,7 @@ const unsigned char L4BTYPES[140] = void __cdecl DRLG_LoadL4SP() { setloadflag_2 = 0; - if ( QuestStatus(11) ) + if ( QuestStatus(QTYPE_WARLRD) ) { pSetPiece_2 = (char *)LoadFileInMem("Levels\\L4Data\\Warlord.DUN", 0); setloadflag_2 = 1; @@ -651,8 +651,8 @@ void __fastcall DRLG_L4(int entry) L4tileFix(); if ( currlevel == 16 ) L4SaveQuads(); - //_LOBYTE(v2) = QuestStatus(11); - if ( (QuestStatus(11) || currlevel == quests[15]._qlevel && gbMaxPlayers != 1) && SP4x1 < SP4x2 ) + //_LOBYTE(v2) = QuestStatus(QTYPE_WARLRD); + if ( (QuestStatus(QTYPE_WARLRD) || currlevel == quests[QTYPE_VB]._qlevel && gbMaxPlayers != 1) && SP4x1 < SP4x2 ) { v3 = SP4x1; v24 = SP4x2 - SP4x1; @@ -681,8 +681,8 @@ void __fastcall DRLG_L4(int entry) DRLG_L4SetSPRoom(SP4x1, SP4y1); if ( currlevel == 16 ) DRLG_LoadDiabQuads(1); - //_LOBYTE(v9) = QuestStatus(11); - if ( !QuestStatus(11) ) + //_LOBYTE(v9) = QuestStatus(QTYPE_WARLRD); + if ( !QuestStatus(QTYPE_WARLRD) ) { if ( currlevel == 15 ) { @@ -691,7 +691,7 @@ void __fastcall DRLG_L4(int entry) v10 = DRLG_L4PlaceMiniSet(L4USTAIRS, 1, 1, -1, -1, 1, 0); if ( v10 ) { - if ( gbMaxPlayers != 1 || (v11 = (unsigned char *)L4PENTA, quests[5]._qactive == 2) ) + if ( gbMaxPlayers != 1 || (v11 = (unsigned char *)L4PENTA, quests[QTYPE_MOD]._qactive == 2) ) v11 = (unsigned char *)L4PENTA2; v10 = DRLG_L4PlaceMiniSet(v11, 1, 1, -1, -1, 0, 1); } @@ -700,7 +700,7 @@ void __fastcall DRLG_L4(int entry) v10 = DRLG_L4PlaceMiniSet(L4USTAIRS, 1, 1, -1, -1, 0, 0); if ( v10 ) { - if ( gbMaxPlayers != 1 || (v12 = (unsigned char *)L4PENTA, quests[5]._qactive == 2) ) + if ( gbMaxPlayers != 1 || (v12 = (unsigned char *)L4PENTA, quests[QTYPE_MOD]._qactive == 2) ) v12 = (unsigned char *)L4PENTA2; v10 = DRLG_L4PlaceMiniSet(v12, 1, 1, -1, -1, 1, 1); } @@ -777,8 +777,8 @@ LABEL_31: DRLG_L4Corners(); DRLG_L4Subs(); DRLG_Init_Globals(); - //_LOBYTE(v13) = QuestStatus(11); - if ( QuestStatus(11) ) + //_LOBYTE(v13) = QuestStatus(QTYPE_WARLRD); + if ( QuestStatus(QTYPE_WARLRD) ) { do { @@ -2617,8 +2617,8 @@ void __cdecl L4firstRoom() } else { - if ( (currlevel != quests[11]._qlevel || !quests[11]._qactive) - && (currlevel != quests[15]._qlevel || gbMaxPlayers == 1) ) + if ( (currlevel != quests[QTYPE_WARLRD]._qlevel || !quests[QTYPE_WARLRD]._qactive) + && (currlevel != quests[QTYPE_VB]._qlevel || gbMaxPlayers == 1) ) { v0 = random(0, 5) + 2; v1 = random(0, 5) + 2; @@ -2642,8 +2642,8 @@ LABEL_10: l4holdx = v2; l4holdy = v5; } - //_LOBYTE(v6) = QuestStatus(11); - if ( QuestStatus(11) || currlevel == quests[15]._qlevel && gbMaxPlayers != 1 ) + //_LOBYTE(v6) = QuestStatus(QTYPE_WARLRD); + if ( QuestStatus(QTYPE_WARLRD) || currlevel == quests[QTYPE_VB]._qlevel && gbMaxPlayers != 1 ) { SP4x1 = v2 + 1; SP4y1 = v5 + 1; @@ -2980,8 +2980,8 @@ bool __fastcall DRLG_L4PlaceMiniSet(const unsigned char *miniset, int tmin, int } if ( currlevel == 15 ) { - quests[15]._qtx = v11 + 1; - quests[15]._qty = v12 + 1; + quests[QTYPE_VB]._qtx = v11 + 1; + quests[QTYPE_VB]._qty = v12 + 1; } result = 1; if ( setview == 1 ) diff --git a/Source/inv.cpp b/Source/inv.cpp index 85824dfb9..dc3e5f8e9 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -1979,8 +1979,8 @@ void __fastcall CheckQuestItem(int pnum) v1 = pnum; v2 = plr[v1].HoldItem.IDidx; if ( v2 == IDI_OPTAMULET ) - quests[8]._qactive = 3; - if ( v2 == IDI_MUSHROOM && quests[1]._qactive == 2 && quests[1]._qvar1 == 3 ) + quests[QTYPE_BLIND]._qactive = 3; + if ( v2 == IDI_MUSHROOM && quests[QTYPE_BLKM]._qactive == 2 && quests[QTYPE_BLKM]._qvar1 == QS_MUSHSPAWNED ) { v3 = plr[v1]._pClass; sfxdelay = IDI_OPTAMULET; @@ -1999,16 +1999,16 @@ void __fastcall CheckQuestItem(int pnum) { sfxdnum = PS_WARR95; } - quests[1]._qvar1 = 4; + quests[QTYPE_BLKM]._qvar1 = QS_MUSHPICKED; } if ( v2 == IDI_ANVIL ) { - if ( quests[10]._qactive == 1 ) + if ( quests[QTYPE_ANVIL]._qactive == 1 ) { - quests[10]._qactive = 2; - quests[10]._qvar1 = 1; + quests[QTYPE_ANVIL]._qactive = 2; + quests[QTYPE_ANVIL]._qvar1 = 1; } - if ( quests[10]._qlog == 1 ) + if ( quests[QTYPE_ANVIL]._qlog == 1 ) { sfxdelay = IDI_OPTAMULET; v4 = plr[myplr]._pClass; @@ -2051,12 +2051,12 @@ void __fastcall CheckQuestItem(int pnum) } if ( v2 == IDI_ROCK ) { - if ( quests[0]._qactive == 1 ) + if ( quests[QTYPE_INFRA]._qactive == 1 ) { - quests[0]._qactive = 2; - quests[0]._qvar1 = 1; + quests[QTYPE_INFRA]._qactive = 2; + quests[QTYPE_INFRA]._qvar1 = 1; } - if ( quests[0]._qlog == 1 ) + if ( quests[QTYPE_INFRA]._qlog == 1 ) { sfxdelay = IDI_OPTAMULET; v6 = plr[myplr]._pClass; @@ -2079,7 +2079,7 @@ void __fastcall CheckQuestItem(int pnum) } if ( v2 == IDI_ARMOFVAL ) { - quests[9]._qactive = 3; + quests[QTYPE_BLOOD]._qactive = 3; sfxdelay = 20; v7 = plr[myplr]._pClass; if ( v7 ) diff --git a/Source/items.cpp b/Source/items.cpp index d2a26c9b8..3ad59b2bd 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -743,9 +743,9 @@ void __cdecl InitItems() if ( !setlevel ) { GetRndSeed(); - if ( QuestStatus(0) ) + if ( QuestStatus(QTYPE_INFRA) ) SpawnRock(); - if ( QuestStatus(10) ) + if ( QuestStatus(QTYPE_ANVIL) ) SpawnQuestItem(16, 2 * setpc_x + 27, 2 * setpc_y + 27, 0, 1); if ( currlevel > 0u && currlevel < 0x10u ) AddInitItems(); @@ -3085,10 +3085,10 @@ void __fastcall SpawnItem(int m, int x, int y, unsigned char sendmsg) if ( !monster[m]._uniqtype && ((monster[m].MData->mTreasure & 0x8000) == 0 || gbMaxPlayers == 1) ) { - if ( quests[1]._qactive == 2 && quests[1]._qvar1 == 5 ) + if ( quests[QTYPE_BLKM]._qactive == 2 && quests[QTYPE_BLKM]._qvar1 == QS_MUSHGIVEN ) { - idx = 18; // Brain - quests[1]._qvar1 = 6; + idx = IDI_BRAIN; + quests[QTYPE_BLKM]._qvar1 = QS_BRAINSPAWNED; goto LABEL_13; } idx = RndItem(m); diff --git a/Source/monster.cpp b/Source/monster.cpp index 6ab684a4e..7f64809a6 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -1046,7 +1046,7 @@ void __fastcall PlaceUniqueMonst(int uniqindex, int miniontype, int unpackfilesi Monst->mtalkmsg = 0; } - if ( Monst->_mAi != AI_LAZURUS || quests[15]._qvar1 <= 3 ) + if ( Monst->_mAi != AI_LAZURUS || quests[QTYPE_VB]._qvar1 <= 3 ) { if ( Monst->mtalkmsg ) { @@ -1126,7 +1126,7 @@ void __cdecl PlaceQuestMonsters() PlaceUniqueMonst(9, 0, 0); } - if ( currlevel == quests[12]._qlevel && gbMaxPlayers != 1 ) + if ( currlevel == quests[QTYPE_KING]._qlevel && gbMaxPlayers != 1 ) { skeltype = 0; @@ -1178,10 +1178,10 @@ void __cdecl PlaceQuestMonsters() } if ( QuestStatus(QTYPE_ZHAR) && zharlib == -1 ) { - quests[3]._qactive = 0; + quests[QTYPE_ZHAR]._qactive = 0; } - if ( currlevel == quests[15]._qlevel && gbMaxPlayers != 1 ) + if ( currlevel == quests[QTYPE_VB]._qlevel && gbMaxPlayers != 1 ) { AddMonsterType(UniqMonst[4].mtype, 4); AddMonsterType(UniqMonst[5].mtype, 4); @@ -1520,30 +1520,30 @@ void __cdecl PlaceUniques() v7 = v4 - 1; if ( !v0 ) { - if ( quests[2]._qactive ) + if ( quests[QTYPE_GARB]._qactive ) goto LABEL_23; v3 = 0; } if ( v0 == 2 ) { - if ( quests[3]._qactive ) + if ( quests[QTYPE_ZHAR]._qactive ) goto LABEL_23; v3 = 0; } if ( v0 == 3 ) { - if ( quests[7]._qactive ) + if ( quests[QTYPE_BOL]._qactive ) goto LABEL_23; v3 = 0; } if ( v0 != 7 ) { LABEL_20: - if ( v0 == 8 && !quests[11]._qactive ) + if ( v0 == 8 && !quests[QTYPE_WARLRD]._qactive ) v3 = 0; goto LABEL_23; } - if ( !quests[4]._qactive ) + if ( !quests[QTYPE_VEIL]._qactive ) { v3 = 0; goto LABEL_20; @@ -2374,7 +2374,7 @@ void __fastcall M_DiabloDeath(int i, unsigned char sendmsg) v2 = sendmsg; v3 = i; PlaySFX(USFX_DIABLOD); - quests[5]._qactive = 3; + quests[QTYPE_MOD]._qactive = 3; if ( v2 ) NetSendCmdQuest(1u, 5u); gbProcessPlayers = 0; @@ -2518,8 +2518,8 @@ void __fastcall MonstStartKill(int i, int pnum, unsigned char sendmsg) monster[v5]._mhitpoints = 0; ++monstkills[v7]; SetRndSeed(v6); - //_LOBYTE(v8) = QuestStatus(2); - if ( QuestStatus(2) && monster[v5].mName == UniqMonst[0].mName ) + //_LOBYTE(v8) = QuestStatus(QTYPE_GARB); + if ( QuestStatus(QTYPE_GARB) && monster[v5].mName == UniqMonst[0].mName ) { CreateTypeItem(monster[v5]._mx + 1, monster[v5]._my + 1, 1u, 4, 0, 1, 0); } @@ -3631,8 +3631,8 @@ int __fastcall M_DoTalk(int i) { v4 = monster[v2].mtalkmsg; if ( v4 == QUEST_GARBUD1 ) - quests[2]._qactive = 2; - quests[2]._qlog = 1; + quests[QTYPE_GARB]._qactive = 2; + quests[QTYPE_GARB]._qlog = 1; if ( v4 == QUEST_GARBUD2 && !(monster[v2]._mFlags & 0x40) ) { SpawnItem(v1, monster[v2]._mx + 1, monster[v2]._my + 1, 1u); @@ -3645,8 +3645,8 @@ int __fastcall M_DoTalk(int i) { v5 = monster[v2]._my + 1; v6 = monster[v2]._mx + 1; - quests[3]._qactive = 2; - quests[3]._qlog = 1; + quests[QTYPE_ZHAR]._qactive = 2; + quests[QTYPE_ZHAR]._qlog = 1; CreateTypeItem(v6, v5, 0, 0, 24, 1, 0); monster[v2]._mFlags |= 0x40u; } @@ -3659,12 +3659,12 @@ int __fastcall M_DoTalk(int i) TransVal = 9; DRLG_MRectTrans(setpc_x, setpc_y, (setpc_w >> 1) + setpc_x + 4, setpc_y + (setpc_h >> 1)); TransVal = v7; - quests[7]._qvar1 = 2; - if ( quests[7]._qactive == 1 ) - quests[7]._qactive = 2; + quests[QTYPE_BOL]._qvar1 = 2; + if ( quests[QTYPE_BOL]._qactive == 1 ) + quests[QTYPE_BOL]._qactive = 2; monster[v2]._mFlags |= 0x40u; } - if ( quests[7]._qvar1 < 2u ) + if ( quests[QTYPE_BOL]._qvar1 < 2u ) { sprintf(tempstr, "SS Talk = %i, Flags = %i", monster[v2].mtalkmsg, monster[v2]._mFlags); TermMsg(tempstr); @@ -3675,8 +3675,8 @@ int __fastcall M_DoTalk(int i) v8 = monster[v2].mtalkmsg; if ( v8 == QUEST_VEIL9 ) { - quests[4]._qactive = 2; - quests[4]._qlog = 1; + quests[QTYPE_VEIL]._qactive = 2; + quests[QTYPE_VEIL]._qlog = 1; } if ( v8 == QUEST_VEIL11 && !(monster[v2]._mFlags & 0x40) ) { @@ -3686,12 +3686,12 @@ int __fastcall M_DoTalk(int i) } v9 = monster[v2].mName; if ( v9 == UniqMonst[8].mName ) - quests[11]._qvar1 = 2; + quests[QTYPE_WARLRD]._qvar1 = 2; if ( v9 == UniqMonst[4].mName && gbMaxPlayers != 1 ) { monster[v2]._msquelch = -1; monster[v2].mtalkmsg = 0; - quests[15]._qvar1 = 6; + quests[QTYPE_VB]._qvar1 = 6; _LOBYTE(monster[v2]._mgoal) = 1; } } @@ -6947,7 +6947,7 @@ void __fastcall MAI_SnotSpil(int i) monster[v2].mtalkmsg = QUEST_BANNER11; _LOBYTE(monster[v2]._mgoal) = 6; } - if ( monster[v2].mtalkmsg == QUEST_BANNER11 && quests[7]._qvar1 == 3 ) + if ( monster[v2].mtalkmsg == QUEST_BANNER11 && quests[QTYPE_BOL]._qvar1 == 3 ) { monster[v2].mtalkmsg = 0; _LOBYTE(monster[v2]._mgoal) = 1; @@ -6960,14 +6960,14 @@ void __fastcall MAI_SnotSpil(int i) if ( !effect_is_playing(USFX_SNOT3) && _LOBYTE(monster[v2]._mgoal) == 7 ) { ObjChangeMap(setpc_x, setpc_y, setpc_w + setpc_x + 1, setpc_h + setpc_y + 1); - quests[7]._qvar1 = 3; + quests[QTYPE_BOL]._qvar1 = 3; RedoPlayerVision(); monster[v2]._msquelch = -1; monster[v2].mtalkmsg = 0; _LOBYTE(monster[v2]._mgoal) = 1; } } - if ( quests[7]._qvar1 == 3 ) + if ( quests[QTYPE_BOL]._qvar1 == 3 ) { v7 = monster[v2]._mgoal; if ( v7 == 1 || v7 == 5 ) @@ -7014,7 +7014,7 @@ void __fastcall MAI_Lazurus(int i) { PlayInGameMovie("gendata\\fprst3.smk"); monster[v2]._mmode = MM_TALK; - quests[15]._qvar1 = 5; + quests[QTYPE_VB]._qvar1 = 5; } if ( monster[v2].mtalkmsg == QUEST_VILE13 ) { @@ -7025,7 +7025,7 @@ void __fastcall MAI_Lazurus(int i) RedoPlayerVision(); monster[v2]._msquelch = -1; monster[v2].mtalkmsg = 0; - quests[15]._qvar1 = 6; + quests[QTYPE_VB]._qvar1 = 6; _LOBYTE(monster[v2]._mgoal) = 1; } } @@ -7033,7 +7033,7 @@ void __fastcall MAI_Lazurus(int i) if ( gbMaxPlayers != 1 ) { LABEL_29: - if ( monster[v2].mtalkmsg == QUEST_VILE13 && _LOBYTE(monster[v2]._mgoal) == 6 && quests[15]._qvar1 <= 3u ) + if ( monster[v2].mtalkmsg == QUEST_VILE13 && _LOBYTE(monster[v2]._mgoal) == 6 && quests[QTYPE_VB]._qvar1 <= 3u ) monster[v2]._mmode = MM_TALK; } } @@ -7074,7 +7074,7 @@ void __fastcall MAI_Lazhelp(int i) { if ( gbMaxPlayers == 1 ) { - if ( quests[15]._qvar1 <= 5u ) + if ( quests[QTYPE_VB]._qvar1 <= 5u ) { _LOBYTE(monster[v2]._mgoal) = 6; goto LABEL_10; @@ -7124,7 +7124,7 @@ void __fastcall MAI_Lachdanan(int i) if ( !effect_is_playing(USFX_LACH3) && _LOBYTE(monster[v2]._mgoal) == 7 ) { monster[v2].mtalkmsg = 0; - quests[4]._qactive = 3; + quests[QTYPE_VEIL]._qactive = 3; M_StartKill(v1, -1); } } @@ -8710,16 +8710,16 @@ void __fastcall TalktoMonster(int i) v2->_mmode = MM_TALK; if ( v3 == AI_SNOTSPIL || v3 == AI_LACHDAN ) { - //_LOBYTE(v5) = QuestStatus(7); - if ( QuestStatus(7) && quests[7]._qvar1 == 2 && PlrHasItem(v4, IDI_BANNER, &inv_item_num) ) + //_LOBYTE(v5) = QuestStatus(QTYPE_BOL); + if ( QuestStatus(QTYPE_BOL) && quests[QTYPE_BOL]._qvar1 == 2 && PlrHasItem(v4, IDI_BANNER, &inv_item_num) ) { RemoveInvItem(v4, inv_item_num); - quests[7]._qactive = 3; + quests[QTYPE_BOL]._qactive = 3; v2->mtalkmsg = QUEST_BANNER12; _LOBYTE(v2->_mgoal) = 6; } - //_LOBYTE(v6) = QuestStatus(4); - if ( QuestStatus(4) && v2->mtalkmsg >= (signed int)QUEST_VEIL9 ) + //_LOBYTE(v6) = QuestStatus(QTYPE_VEIL); + if ( QuestStatus(QTYPE_VEIL) && v2->mtalkmsg >= (signed int)QUEST_VEIL9 ) { if ( PlrHasItem(v4, IDI_GLDNELIX, &inv_item_num) ) { diff --git a/Source/objects.cpp b/Source/objects.cpp index d01a05129..bb0101478 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -708,10 +708,10 @@ void __cdecl AddCandles() int v1; // edi int v2; // ebx - v0 = quests[13]._qtx; - v1 = quests[13]._qty; - v2 = quests[13]._qty + 1; - AddObject(OBJ_STORYCANDLE, quests[13]._qtx - 2, quests[13]._qty + 1); + v0 = quests[QTYPE_PW]._qtx; + v1 = quests[QTYPE_PW]._qty; + v2 = quests[QTYPE_PW]._qty + 1; + AddObject(OBJ_STORYCANDLE, quests[QTYPE_PW]._qtx - 2, quests[QTYPE_PW]._qty + 1); AddObject(OBJ_STORYCANDLE, v0 + 3, v2); v1 += 2; AddObject(OBJ_STORYCANDLE, v0 - 1, v1); @@ -758,14 +758,14 @@ void __fastcall AddBookLever(int lx1, int ly1, int lx2, int ly2, int x1, int y1, if ( ++v18 > 20000 ) return; } - //_LOBYTE(v13) = QuestStatus(8); - if ( QuestStatus(8) ) + //_LOBYTE(v13) = QuestStatus(QTYPE_BLIND); + if ( QuestStatus(QTYPE_BLIND) ) AddObject(OBJ_BLINDBOOK, v9, v10); - //_LOBYTE(v14) = QuestStatus(11); - if ( QuestStatus(11) ) + //_LOBYTE(v14) = QuestStatus(QTYPE_WARLRD); + if ( QuestStatus(QTYPE_WARLRD) ) AddObject(OBJ_STEELTOME, v9, v10); - //_LOBYTE(v15) = QuestStatus(9); - if ( QuestStatus(9) ) + //_LOBYTE(v15) = QuestStatus(QTYPE_BLOOD); + if ( QuestStatus(QTYPE_BLOOD) ) { v9 = 2 * setpc_x + 25; v10 = 2 * setpc_y + 40; @@ -1496,7 +1496,7 @@ void __cdecl InitObjects() GetRndSeed(); if ( currlevel == 9 && gbMaxPlayers == 1 ) AddSlainHero(); - if ( currlevel == quests[1]._qlevel && quests[1]._qactive == 1 ) + if ( currlevel == quests[QTYPE_BLKM]._qlevel && quests[QTYPE_BLKM]._qactive == 1 ) AddMushPatch(); if ( currlevel == 4 ) AddStoryBooks(); @@ -1506,14 +1506,14 @@ void __cdecl InitObjects() AddStoryBooks(); if ( leveltype == DTYPE_CATHEDRAL ) { - //_LOBYTE(v1) = QuestStatus(6); - if ( QuestStatus(6) ) + //_LOBYTE(v1) = QuestStatus(QTYPE_BUTCH); + if ( QuestStatus(QTYPE_BUTCH) ) AddTortures(); - //_LOBYTE(v2) = QuestStatus(13); - if ( QuestStatus(13) ) + //_LOBYTE(v2) = QuestStatus(QTYPE_PW); + if ( QuestStatus(QTYPE_PW) ) AddCandles(); - //_LOBYTE(v3) = QuestStatus(7); - if ( QuestStatus(7) ) + //_LOBYTE(v3) = QuestStatus(QTYPE_BOL); + if ( QuestStatus(QTYPE_BOL) ) AddObject(OBJ_SIGNCHEST, 2 * setpc_x + 26, 2 * setpc_y + 19); InitRndLocBigObj(10, 15, OBJ_SARC); AddL1Objs(0, 0, 112, 112); @@ -1521,16 +1521,16 @@ void __cdecl InitObjects() } if ( leveltype == DTYPE_CATACOMBS ) { - //_LOBYTE(v4) = QuestStatus(0); - if ( QuestStatus(0) ) + //_LOBYTE(v4) = QuestStatus(QTYPE_INFRA); + if ( QuestStatus(QTYPE_INFRA) ) InitRndLocObj5x5(1, 1, OBJ_STAND); - //_LOBYTE(v5) = QuestStatus(14); - if ( QuestStatus(14) ) + //_LOBYTE(v5) = QuestStatus(QTYPE_BONE); + if ( QuestStatus(QTYPE_BONE) ) InitRndLocObj5x5(1, 1, OBJ_BOOK2R); AddL2Objs(0, 0, 112, 112); AddL2Torches(); - //_LOBYTE(v6) = QuestStatus(8); - if ( QuestStatus(8) ) + //_LOBYTE(v6) = QuestStatus(QTYPE_BLIND); + if ( QuestStatus(QTYPE_BLIND) ) { v7 = plr[myplr]._pClass; if ( v7 ) @@ -1548,14 +1548,14 @@ void __cdecl InitObjects() { v8 = QUEST_BLINDING; } - quests[8]._qmsg = v8; + quests[QTYPE_BLIND]._qmsg = v8; AddBookLever(0, 0, 112, 112, setpc_x, setpc_y, setpc_w + setpc_x + 1, setpc_h + setpc_y + 1, v8); v9 = LoadFileInMem("Levels\\L2Data\\Blind2.DUN", 0); LoadMapObjs(v9, 2 * setpc_x, 2 * setpc_y); mem_free_dbg(v9); } - //_LOBYTE(v10) = QuestStatus(9); - if ( QuestStatus(9) ) + //_LOBYTE(v10) = QuestStatus(QTYPE_BLOOD); + if ( QuestStatus(QTYPE_BLOOD) ) { v11 = plr[myplr]._pClass; if ( v11 ) @@ -1573,7 +1573,7 @@ void __cdecl InitObjects() { v8 = QUEST_BLOODY; } - quests[9]._qmsg = v8; + quests[QTYPE_BLOOD]._qmsg = v8; AddBookLever(0, 0, 112, 112, setpc_x, setpc_y + 3, setpc_x + 2, setpc_y + 7, v8); AddObject(OBJ_PEDISTAL, 2 * setpc_x + 25, 2 * setpc_y + 32); } @@ -1586,8 +1586,8 @@ void __cdecl InitObjects() } if ( leveltype == DTYPE_HELL ) { - //_LOBYTE(v12) = QuestStatus(11); - if ( QuestStatus(11) ) + //_LOBYTE(v12) = QuestStatus(QTYPE_WARLRD); + if ( QuestStatus(QTYPE_WARLRD) ) { v13 = plr[myplr]._pClass; if ( v13 ) @@ -1605,14 +1605,14 @@ void __cdecl InitObjects() { v8 = QUEST_BLOODWAR; } - quests[11]._qmsg = v8; + quests[QTYPE_WARLRD]._qmsg = v8; AddBookLever(0, 0, 112, 112, setpc_x, setpc_y, setpc_x + setpc_w, setpc_y + setpc_h, v8); v14 = LoadFileInMem("Levels\\L4Data\\Warlord.DUN", 0); LoadMapObjs(v14, 2 * setpc_x, 2 * setpc_y); mem_free_dbg(v14); } - //_LOBYTE(v15) = QuestStatus(15); - if ( QuestStatus(15) && gbMaxPlayers == 1 ) + //_LOBYTE(v15) = QuestStatus(QTYPE_VB); + if ( QuestStatus(QTYPE_VB) && gbMaxPlayers == 1 ) AddLazStand(); InitRndBarrels(); AddL4Goodies(); @@ -2566,8 +2566,8 @@ void __fastcall Obj_Circle(int i) v6 = object[v1]._oVar2; object[v1]._oVar6 = 4; ObjChangeMapResync(object[v1]._oVar1, v6, object[v1]._oVar3, v5); - if ( quests[15]._qactive == 2 ) - quests[15]._qvar1 = 4; + if ( quests[QTYPE_VB]._qactive == 2 ) + quests[QTYPE_VB]._qvar1 = 4; AddMissile(plr[myplr].WorldX, plr[myplr].WorldY, 35, 46, plr[myplr]._pdir, 3, 0, myplr, 0, 0); track_repeat_walk(0); sgbMouseDown = 0; @@ -4088,7 +4088,7 @@ LABEL_17: v8[1] = v8[1]; if ( plr[v3]._pSplLvl[SPL_GUARDIAN] < 15 ) ++plr[0]._pSplLvl[v7 + SPL_GUARDIAN]; - quests[14]._qactive = 3; + quests[QTYPE_BONE]._qactive = 3; if ( !deltaload ) PlaySfxLoc(IS_QUESTDN, object[esi1]._ox, object[esi1]._oy); _LOBYTE(v7) = 43; @@ -4151,27 +4151,27 @@ void __fastcall OperateBookLever(int pnum, int i) if ( object[i]._oSelFlag && !qtextflag ) { v5 = object[v2]._otype; - if ( v5 == OBJ_BLINDBOOK && !quests[8]._qvar1 ) + if ( v5 == OBJ_BLINDBOOK && !quests[QTYPE_BLIND]._qvar1 ) { - quests[8]._qactive = 2; - quests[8]._qlog = 1; - quests[8]._qvar1 = 1; + quests[QTYPE_BLIND]._qactive = 2; + quests[QTYPE_BLIND]._qlog = 1; + quests[QTYPE_BLIND]._qvar1 = 1; } - if ( v5 == OBJ_BLOODBOOK && !quests[9]._qvar1 ) + if ( v5 == OBJ_BLOODBOOK && !quests[QTYPE_BLOOD]._qvar1 ) { - quests[9]._qactive = 2; - quests[9]._qlog = 1; - quests[9]._qvar1 = 1; + quests[QTYPE_BLOOD]._qactive = 2; + quests[QTYPE_BLOOD]._qlog = 1; + quests[QTYPE_BLOOD]._qvar1 = 1; SpawnQuestItem(21, 2 * setpc_x + 19, 2 * setpc_y + 26, 0, 1); SpawnQuestItem(21, 2 * setpc_x + 31, 2 * setpc_y + 26, 0, 1); SpawnQuestItem(21, 2 * setpc_x + 25, 2 * setpc_y + 33, 0, 1); } v6 = object[v2]._otype; - if ( v6 == OBJ_STEELTOME && !quests[11]._qvar1 ) + if ( v6 == OBJ_STEELTOME && !quests[QTYPE_WARLRD]._qvar1 ) { - quests[11]._qactive = 2; - quests[11]._qlog = 1; - quests[11]._qvar1 = 1; + quests[QTYPE_WARLRD]._qactive = 2; + quests[QTYPE_WARLRD]._qlog = 1; + quests[QTYPE_WARLRD]._qvar1 = 1; } if ( object[v2]._oAnimFrame != object[v2]._oVar6 ) { @@ -4218,10 +4218,10 @@ void __fastcall OperateSChambBk(int pnum, int i) SyncObjectAnim(objectactive[j]); } object[v2]._oAnimFrame = object[v2]._oVar6; - if ( quests[14]._qactive == 1 ) + if ( quests[QTYPE_BONE]._qactive == 1 ) { - quests[14]._qactive = 2; - quests[14]._qlog = 1; + quests[QTYPE_BONE]._qactive = 2; + quests[QTYPE_BONE]._qlog = 1; } v4 = plr[myplr]._pClass; if ( v4 ) @@ -4241,7 +4241,7 @@ void __fastcall OperateSChambBk(int pnum, int i) { v5 = QUEST_BONER; } - quests[14]._qmsg = v5; + quests[QTYPE_BONE]._qmsg = v5; InitQTextMsg(v5); } } @@ -4350,7 +4350,7 @@ void __fastcall OperateMushPatch(int pnum, int i) int xx; // [esp+8h] [ebp-8h] int yy; // [esp+Ch] [ebp-4h] - if ( quests[1]._qactive != 2 || quests[1]._qvar1 < 2u ) + if ( quests[QTYPE_BLKM]._qactive != 2 || quests[QTYPE_BLKM]._qvar1 < QS_TOMEGIVEN ) { if ( !deltaload && pnum == myplr ) { @@ -4388,8 +4388,8 @@ void __fastcall OperateMushPatch(int pnum, int i) if ( v3 ) { GetSuperItemLoc(object[v2]._ox, object[v2]._oy, &xx, &yy); - SpawnQuestItem(17, xx, yy, 0, 0); - quests[1]._qvar1 = 3; + SpawnQuestItem(IDI_MUSHROOM, xx, yy, 0, 0); + quests[QTYPE_BLKM]._qvar1 = QS_MUSHSPAWNED; } } } @@ -4405,7 +4405,7 @@ void __fastcall OperateInnSignChest(int pnum, int i) int xx; // [esp+8h] [ebp-8h] int yy; // [esp+Ch] [ebp-4h] - if ( quests[7]._qvar1 == 2 ) + if ( quests[QTYPE_BOL]._qvar1 == 2 ) { v4 = i; if ( object[i]._oSelFlag ) @@ -5842,8 +5842,8 @@ void __fastcall OperateBookCase(int pnum, int i, unsigned char sendmsg) { SetRndSeed(object[v5]._oRndSeed); CreateTypeItem(object[v5]._ox, object[v5]._oy, 0, ITYPE_MISC, 24, sendmsg, 0); - //_LOBYTE(v7) = QuestStatus(3); - if ( QuestStatus(3) + //_LOBYTE(v7) = QuestStatus(QTYPE_ZHAR); + if ( QuestStatus(QTYPE_ZHAR) && monster[4].mName == UniqMonst[2].mName && monster[4]._msquelch == -1 && monster[4]._mhitpoints ) diff --git a/Source/quests.cpp b/Source/quests.cpp index 6d5884f2e..bab906fef 100644 --- a/Source/quests.cpp +++ b/Source/quests.cpp @@ -18,22 +18,22 @@ int ReturnLvl; // idb QuestData questlist[MAXQUESTS] = { - { 5, -1, DTYPE_NONE, 0, 100, 0, 0, QUEST_INFRA5, "The Magic Rock" }, - { 9, -1, DTYPE_NONE, 1, 100, 0, 0, QUEST_MUSH8, "Black Mushroom" }, - { 4, -1, DTYPE_NONE, 2, 100, 0, 0, QUEST_GARBUD1, "Gharbad The Weak" }, - { 8, -1, DTYPE_NONE, 3, 100, 0, 0, QUEST_ZHAR1, "Zhar the Mad" }, - { 14, -1, DTYPE_NONE, 4, 100, 0, 0, QUEST_VEIL9, "Lachdanan" }, - { 15, -1, DTYPE_NONE, 5, 100, 0, 1, QUEST_VILE3, "Diablo" }, - { 2, 2, DTYPE_NONE, 6, 100, 0, 1, QUEST_BUTCH9, "The Butcher" }, - { 4, -1, DTYPE_NONE, 7, 100, 0, 0, QUEST_BANNER2, "Ogden's Sign" }, - { 7, -1, DTYPE_NONE, 8, 100, 0, 0, QUEST_BLINDING, "Halls of the Blind" }, - { 5, -1, DTYPE_NONE, 9, 100, 0, 0, QUEST_BLOODY, "Valor" }, - { 10, -1, DTYPE_NONE, 10, 100, 0, 0, QUEST_ANVIL5, "Anvil of Fury" }, - { 13, -1, DTYPE_NONE, 11, 100, 0, 0, QUEST_BLOODWAR, "Warlord of Blood" }, - { 3, 3, DTYPE_CATHEDRAL, 12, 100, 1, 1, QUEST_KING2, "The Curse of King Leoric" }, - { 2, -1, DTYPE_CAVES, 13, 100, 4, 0, QUEST_POISON3, "Poisoned Water Supply" }, - { 6, -1, DTYPE_CATACOMBS, 14, 100, 2, 0, QUEST_BONER, "The Chamber of Bone" }, - { 15, 15, DTYPE_CATHEDRAL, 15, 100, 5, 1, QUEST_VILE1, "Archbishop Lazarus" } + { 5, -1, DTYPE_NONE, QTYPE_INFRA, 100, 0, 0, QUEST_INFRA5, "The Magic Rock" }, + { 9, -1, DTYPE_NONE, QTYPE_BLKM, 100, 0, 0, QUEST_MUSH8, "Black Mushroom" }, + { 4, -1, DTYPE_NONE, QTYPE_GARB, 100, 0, 0, QUEST_GARBUD1, "Gharbad The Weak" }, + { 8, -1, DTYPE_NONE, QTYPE_ZHAR, 100, 0, 0, QUEST_ZHAR1, "Zhar the Mad" }, + { 14, -1, DTYPE_NONE, QTYPE_VEIL, 100, 0, 0, QUEST_VEIL9, "Lachdanan" }, + { 15, -1, DTYPE_NONE, QTYPE_MOD, 100, 0, 1, QUEST_VILE3, "Diablo" }, + { 2, 2, DTYPE_NONE, QTYPE_BUTCH, 100, 0, 1, QUEST_BUTCH9, "The Butcher" }, + { 4, -1, DTYPE_NONE, QTYPE_BOL, 100, 0, 0, QUEST_BANNER2, "Ogden's Sign" }, + { 7, -1, DTYPE_NONE, QTYPE_BLIND, 100, 0, 0, QUEST_BLINDING, "Halls of the Blind" }, + { 5, -1, DTYPE_NONE, QTYPE_BLOOD, 100, 0, 0, QUEST_BLOODY, "Valor" }, + { 10, -1, DTYPE_NONE, QTYPE_ANVIL, 100, 0, 0, QUEST_ANVIL5, "Anvil of Fury" }, + { 13, -1, DTYPE_NONE, QTYPE_WARLRD, 100, 0, 0, QUEST_BLOODWAR, "Warlord of Blood" }, + { 3, 3, DTYPE_CATHEDRAL, QTYPE_KING, 100, 1, 1, QUEST_KING2, "The Curse of King Leoric" }, + { 2, -1, DTYPE_CAVES, QTYPE_PW, 100, 4, 0, QUEST_POISON3, "Poisoned Water Supply" }, + { 6, -1, DTYPE_CATACOMBS, QTYPE_BONE, 100, 2, 0, QUEST_BONER, "The Chamber of Bone" }, + { 15, 15, DTYPE_CATHEDRAL, QTYPE_VB, 100, 5, 1, QUEST_VILE1, "Archbishop Lazarus" } }; char questxoff[7] = { 0, -1, 0, -1, -2, -1, -2 }; char questyoff[7] = { 0, 0, -1, -1, -1, -2, -2 }; @@ -145,9 +145,9 @@ void __cdecl InitQuests() { SetRndSeed(glSeedTbl[15]); if ( random(0, 2) ) - quests[13]._qactive = 0; + quests[QTYPE_PW]._qactive = 0; else - quests[12]._qactive = 0; + quests[QTYPE_KING]._qactive = 0; v13 = random(0, 3); quests[QuestGroup1[v13]]._qactive = 0; v15 = random(0, 3); @@ -162,13 +162,13 @@ void __cdecl InitQuests() if ( questdebug != -1 ) quests[questdebug]._qactive = 2; #endif - if ( !quests[12]._qactive ) - quests[12]._qvar2 = 2; - if ( !quests[0]._qactive ) - quests[0]._qvar2 = 2; - quests[7]._qvar1 = 1; + if ( !quests[QTYPE_KING]._qactive ) + quests[QTYPE_KING]._qvar2 = 2; + if ( !quests[QTYPE_INFRA]._qactive ) + quests[QTYPE_INFRA]._qvar2 = 2; + quests[QTYPE_BOL]._qvar1 = 1; if ( v0 != 1 ) - quests[15]._qvar1 = 2; + quests[QTYPE_VB]._qvar1 = 2; } // 679660: using guessed type char gbMaxPlayers; // 69BD04: using guessed type int questlog; @@ -180,54 +180,54 @@ void __cdecl CheckQuests() unsigned char *v1; // esi unsigned char v2; // cl - //_LOBYTE(v0) = QuestStatus(15); - if ( QuestStatus(15) ) + //_LOBYTE(v0) = QuestStatus(QTYPE_VB); + if ( QuestStatus(QTYPE_VB) ) { if ( gbMaxPlayers == 1 ) goto LABEL_6; - if ( quests[15]._qvar1 == 2 ) + if ( quests[QTYPE_VB]._qvar1 == 2 ) { AddObject(OBJ_ALTBOY, 2 * setpc_x + 20, 2 * setpc_y + 22); - quests[15]._qvar1 = 3; + quests[QTYPE_VB]._qvar1 = 3; NetSendCmdQuest(1u, 0xFu); } } if ( gbMaxPlayers != 1 ) return; LABEL_6: - if ( currlevel == quests[15]._qlevel && !setlevel && quests[15]._qvar1 >= 2u ) + if ( currlevel == quests[QTYPE_VB]._qlevel && !setlevel && quests[QTYPE_VB]._qvar1 >= 2u ) { - if ( quests[15]._qactive != 2 && quests[15]._qactive != 3 ) + if ( quests[QTYPE_VB]._qactive != 2 && quests[QTYPE_VB]._qactive != 3 ) goto LABEL_29; - if ( !quests[15]._qvar2 || quests[15]._qvar2 == 2 ) + if ( !quests[QTYPE_VB]._qvar2 || quests[QTYPE_VB]._qvar2 == 2 ) { - quests[15]._qtx = 2 * quests[15]._qtx + 16; - quests[15]._qty = 2 * quests[15]._qty + 16; - AddMissile(quests[15]._qtx, quests[15]._qty, quests[15]._qtx, quests[15]._qty, 0, 65, 0, myplr, 0, 0); - quests[15]._qvar2 = 1; - if ( quests[15]._qactive == 2 ) - quests[15]._qvar1 = 3; + quests[QTYPE_VB]._qtx = 2 * quests[QTYPE_VB]._qtx + 16; + quests[QTYPE_VB]._qty = 2 * quests[QTYPE_VB]._qty + 16; + AddMissile(quests[QTYPE_VB]._qtx, quests[QTYPE_VB]._qty, quests[QTYPE_VB]._qtx, quests[QTYPE_VB]._qty, 0, 65, 0, myplr, 0, 0); + quests[QTYPE_VB]._qvar2 = 1; + if ( quests[QTYPE_VB]._qactive == 2 ) + quests[QTYPE_VB]._qvar1 = 3; } } - if ( quests[15]._qactive == 3 ) + if ( quests[QTYPE_VB]._qactive == 3 ) { if ( !setlevel ) goto LABEL_29; - if ( setlvlnum == SL_VILEBETRAYER && quests[15]._qvar2 == 4 ) + if ( setlvlnum == SL_VILEBETRAYER && quests[QTYPE_VB]._qvar2 == 4 ) { AddMissile(35, 32, 35, 32, 0, 65, 0, myplr, 0, 0); - quests[15]._qvar2 = 3; + quests[QTYPE_VB]._qvar2 = 3; } } if ( setlevel ) { - if ( setlvlnum == quests[13]._qslvl - && quests[13]._qactive != 1 - && leveltype == quests[13]._qlvltype + if ( setlvlnum == quests[QTYPE_PW]._qslvl + && quests[QTYPE_PW]._qactive != 1 + && leveltype == quests[QTYPE_PW]._qlvltype && nummonsters == 4 - && quests[13]._qactive != 3 ) + && quests[QTYPE_PW]._qactive != 3 ) { - quests[13]._qactive = 3; + quests[QTYPE_PW]._qactive = 3; PlaySfxLoc(IS_QUESTDN, plr[myplr].WorldX, plr[myplr].WorldY); LoadPalette("Levels\\L3Data\\L3pwater.pal"); WaterDone = 32; @@ -341,7 +341,7 @@ void __fastcall CheckQuestKill(int m, unsigned char sendmsg) v3 = monster[v2].MType->mtype; if ( v3 == MT_SKING ) { - quests[12]._qactive = 3; + quests[QTYPE_KING]._qactive = 3; sfxdelay = 30; v4 = plr[myplr]._pClass; if ( v4 ) @@ -374,7 +374,7 @@ LABEL_10: v7 = monster[v2].mName; if ( v7 == UniqMonst[0].mName ) { - quests[2]._qactive = 3; + quests[QTYPE_GARB]._qactive = 3; sfxdelay = 30; v8 = plr[myplr]._pClass; if ( v8 ) @@ -396,7 +396,7 @@ LABEL_10: } if ( v7 == UniqMonst[2].mName ) { - quests[3]._qactive = 3; + quests[QTYPE_ZHAR]._qactive = 3; sfxdelay = 30; v9 = plr[myplr]._pClass; if ( v9 ) @@ -420,10 +420,10 @@ LABEL_10: { if ( gbMaxPlayers != 1 ) { - quests[15]._qactive = 3; - quests[15]._qvar1 = 7; + quests[QTYPE_VB]._qactive = 3; + quests[QTYPE_VB]._qvar1 = 7; sfxdelay = 30; - quests[5]._qactive = 2; + quests[QTYPE_MOD]._qactive = 2; v10 = 0; v11 = dPiece; do @@ -475,12 +475,12 @@ LABEL_10: } if ( v7 == UniqMonst[4].mName && gbMaxPlayers == 1 ) { - quests[15]._qactive = 3; + quests[QTYPE_VB]._qactive = 3; sfxdelay = 30; InitVPTriggers(); - quests[15]._qvar1 = 7; - quests[15]._qvar2 = 4; - quests[5]._qactive = 2; + quests[QTYPE_VB]._qvar1 = 7; + quests[QTYPE_VB]._qvar2 = 4; + quests[QTYPE_MOD]._qactive = 2; AddMissile(35, 32, 35, 32, 0, 65, 0, myplr, 0, 0); v16 = plr[myplr]._pClass; if ( v16 ) @@ -503,7 +503,7 @@ LABEL_10: } if ( v7 == UniqMonst[8].mName ) { - quests[11]._qactive = 3; + quests[QTYPE_WARLRD]._qactive = 3; sfxdelay = 30; v17 = plr[myplr]._pClass; if ( v17 ) @@ -524,7 +524,7 @@ LABEL_10: } return; } - quests[6]._qactive = 3; + quests[QTYPE_BUTCH]._qactive = 3; sfxdelay = 30; v6 = plr[myplr]._pClass; if ( v6 ) @@ -922,20 +922,20 @@ void __cdecl SetReturnLvlPos() switch ( setlvlnum ) { case SL_SKELKING: - ReturnLvlX = quests[12]._qtx + 1; - ReturnLvlY = quests[12]._qty; - v0 = (unsigned char)quests[12]._qlevel; + ReturnLvlX = quests[QTYPE_KING]._qtx + 1; + ReturnLvlY = quests[QTYPE_KING]._qty; + v0 = (unsigned char)quests[QTYPE_KING]._qlevel; goto LABEL_9; case SL_BONECHAMB: ReturnLvlT = 2; - ReturnLvlX = quests[14]._qtx + 1; - ReturnLvlY = quests[14]._qty; - v0 = (unsigned char)quests[14]._qlevel; + ReturnLvlX = quests[QTYPE_BONE]._qtx + 1; + ReturnLvlY = quests[QTYPE_BONE]._qty; + v0 = (unsigned char)quests[QTYPE_BONE]._qlevel; goto LABEL_10; case SL_POISONWATER: - ReturnLvlX = quests[13]._qtx; - ReturnLvlY = quests[13]._qty + 1; - v0 = (unsigned char)quests[13]._qlevel; + ReturnLvlX = quests[QTYPE_PW]._qtx; + ReturnLvlY = quests[QTYPE_PW]._qty + 1; + v0 = (unsigned char)quests[QTYPE_PW]._qlevel; LABEL_9: ReturnLvlT = 1; goto LABEL_10; @@ -943,9 +943,9 @@ LABEL_9: if ( setlvlnum != 5 ) return; ReturnLvlT = 4; - ReturnLvlX = quests[15]._qtx + 1; - ReturnLvlY = quests[15]._qty - 1; - v0 = (unsigned char)quests[15]._qlevel; + ReturnLvlX = quests[QTYPE_VB]._qtx + 1; + ReturnLvlY = quests[QTYPE_VB]._qty - 1; + v0 = (unsigned char)quests[QTYPE_VB]._qlevel; LABEL_10: ReturnLvl = v0; } @@ -953,8 +953,8 @@ LABEL_10: void __cdecl GetReturnLvlPos() { - if ( quests[15]._qactive == 3 ) - quests[15]._qvar2 = 2; + if ( quests[QTYPE_VB]._qactive == 3 ) + quests[QTYPE_VB]._qvar2 = 2; ViewX = ReturnLvlX; ViewY = ReturnLvlY; currlevel = ReturnLvl; @@ -964,26 +964,26 @@ void __cdecl GetReturnLvlPos() void __cdecl ResyncMPQuests() { - if ( quests[12]._qactive == 1 - && currlevel >= (unsigned char)quests[12]._qlevel - 1 - && currlevel <= (unsigned char)quests[12]._qlevel + 1 ) + if ( quests[QTYPE_KING]._qactive == 1 + && currlevel >= (unsigned char)quests[QTYPE_KING]._qlevel - 1 + && currlevel <= (unsigned char)quests[QTYPE_KING]._qlevel + 1 ) { - quests[12]._qactive = 2; + quests[QTYPE_KING]._qactive = 2; NetSendCmdQuest(1u, 0xCu); } - if ( quests[6]._qactive == 1 - && currlevel >= (unsigned char)quests[6]._qlevel - 1 - && currlevel <= (unsigned char)quests[6]._qlevel + 1 ) + if ( quests[QTYPE_BUTCH]._qactive == 1 + && currlevel >= (unsigned char)quests[QTYPE_BUTCH]._qlevel - 1 + && currlevel <= (unsigned char)quests[QTYPE_BUTCH]._qlevel + 1 ) { - quests[6]._qactive = 2; + quests[QTYPE_BUTCH]._qactive = 2; NetSendCmdQuest(1u, 6u); } - if ( quests[15]._qactive == 1 && currlevel == (unsigned char)quests[15]._qlevel - 1 ) + if ( quests[QTYPE_VB]._qactive == 1 && currlevel == (unsigned char)quests[QTYPE_VB]._qlevel - 1 ) { - quests[15]._qactive = 2; + quests[QTYPE_VB]._qactive = 2; NetSendCmdQuest(1u, 0xFu); } - if ( QuestStatus(15) ) + if ( QuestStatus(QTYPE_VB) ) AddObject(OBJ_ALTBOY, 2 * setpc_x + 20, 2 * setpc_y + 22); } @@ -998,10 +998,10 @@ void __cdecl ResyncQuests() char v6; // bl int k; // esi - if ( setlevel && setlvlnum == quests[13]._qslvl && quests[13]._qactive != 1 && leveltype == quests[13]._qlvltype ) + if ( setlevel && setlvlnum == quests[QTYPE_PW]._qslvl && quests[QTYPE_PW]._qactive != 1 && leveltype == quests[QTYPE_PW]._qlvltype ) { v0 = "Levels\\L3Data\\L3pwater.pal"; - if ( quests[13]._qactive != 3 ) + if ( quests[QTYPE_PW]._qactive != 3 ) v0 = "Levels\\L3Data\\L3pfoul.pal"; LoadPalette(v0); v1 = 0; @@ -1009,16 +1009,16 @@ void __cdecl ResyncQuests() palette_update_quest_palette(v1++); while ( v1 <= 32 ); } - //_LOBYTE(v2) = QuestStatus(7); - if ( QuestStatus(7) ) + //_LOBYTE(v2) = QuestStatus(QTYPE_BOL); + if ( QuestStatus(QTYPE_BOL) ) { - if ( quests[7]._qvar1 == 1 ) + if ( quests[QTYPE_BOL]._qvar1 == 1 ) ObjChangeMapResync( setpc_w + setpc_x - 2, setpc_h + setpc_y - 2, setpc_w + setpc_x + 1, setpc_h + setpc_y + 1); - if ( quests[7]._qvar1 == 2 ) + if ( quests[QTYPE_BOL]._qvar1 == 2 ) { ObjChangeMapResync( setpc_w + setpc_x - 2, @@ -1033,7 +1033,7 @@ void __cdecl ResyncQuests() DRLG_MRectTrans(setpc_x, setpc_y, (setpc_w >> 1) + setpc_x + 4, setpc_y + (setpc_h >> 1)); TransVal = v4; } - if ( quests[7]._qvar1 == 3 ) + if ( quests[QTYPE_BOL]._qvar1 == 3 ) { ObjChangeMapResync(setpc_x, setpc_y, setpc_w + setpc_x + 1, setpc_h + setpc_y + 1); for ( j = 0; j < nobjects; ++j ) @@ -1044,52 +1044,52 @@ void __cdecl ResyncQuests() TransVal = v6; } } - if ( currlevel == quests[1]._qlevel ) + if ( currlevel == quests[QTYPE_BLKM]._qlevel ) { - if ( quests[1]._qactive == 1 ) + if ( quests[QTYPE_BLKM]._qactive == 1 ) { - if ( !quests[1]._qvar1 ) + if ( !quests[QTYPE_BLKM]._qvar1 ) { - SpawnQuestItem(19, 0, 0, 5, 1); - quests[1]._qvar1 = 1; + SpawnQuestItem(IDI_FUNGALTM, 0, 0, 5, 1); + quests[QTYPE_BLKM]._qvar1 = QS_TOMESPAWNED; } } - else if ( quests[1]._qactive == 2 ) + else if ( quests[QTYPE_BLKM]._qactive == 2 ) { - if ( quests[1]._qvar1 < 5u ) + if ( quests[QTYPE_BLKM]._qvar1 < QS_MUSHGIVEN ) { - if ( quests[1]._qvar1 >= 7u ) - Qtalklist[1]._qblkm = -1; + if ( quests[QTYPE_BLKM]._qvar1 >= QS_BRAINGIVEN ) + Qtalklist[TOWN_HEALER]._qblkm = -1; } else { - Qtalklist[6]._qblkm = -1; - Qtalklist[1]._qblkm = 123; + Qtalklist[TOWN_WITCH]._qblkm = -1; + Qtalklist[TOWN_HEALER]._qblkm = QUEST_MUSH3; } } } - if ( currlevel == (unsigned char)quests[4]._qlevel + 1 && quests[4]._qactive == 2 && !quests[4]._qvar1 ) + if ( currlevel == (unsigned char)quests[QTYPE_VEIL]._qlevel + 1 && quests[QTYPE_VEIL]._qactive == 2 && !quests[QTYPE_VEIL]._qvar1 ) { - quests[4]._qvar1 = 1; + quests[QTYPE_VEIL]._qvar1 = 1; SpawnQuestItem(15, 0, 0, 5, 1); } if ( setlevel && setlvlnum == 5 ) { - if ( quests[15]._qvar1 >= 4u ) + if ( quests[QTYPE_VB]._qvar1 >= 4u ) ObjChangeMapResync(1, 11, 20, 18); - if ( quests[15]._qvar1 >= 6u ) + if ( quests[QTYPE_VB]._qvar1 >= 6u ) ObjChangeMapResync(1, 18, 20, 24); - if ( quests[15]._qvar1 >= 7u ) + if ( quests[QTYPE_VB]._qvar1 >= 7u ) InitVPTriggers(); for ( k = 0; k < nobjects; ++k ) SyncObjectAnim(objectactive[k]); } - if ( currlevel == quests[15]._qlevel + if ( currlevel == quests[QTYPE_VB]._qlevel && !setlevel - && (quests[15]._qvar2 == 1 || quests[15]._qvar2 >= 3u) - && (quests[15]._qactive == 2 || quests[15]._qactive == 3) ) + && (quests[QTYPE_VB]._qvar2 == 1 || quests[QTYPE_VB]._qvar2 >= 3u) + && (quests[QTYPE_VB]._qactive == 2 || quests[QTYPE_VB]._qactive == 3) ) { - quests[15]._qvar2 = 2; + quests[QTYPE_VB]._qvar2 = 2; } } // 5A5590: using guessed type char TransVal; diff --git a/Source/themes.cpp b/Source/themes.cpp index a2864dd66..845baf5fd 100644 --- a/Source/themes.cpp +++ b/Source/themes.cpp @@ -608,9 +608,9 @@ void __cdecl InitThemes() v9 = themeCount; for ( j = 0; j < v9; ++j ) themes[j].ttype = -1; - //_LOBYTE(v11) = QuestStatus(3); + //_LOBYTE(v11) = QuestStatus(QTYPE_ZHAR); v13 = &themeLoc[0].ttval; - if ( QuestStatus(3) ) + if ( QuestStatus(QTYPE_ZHAR) ) { v14 = 0; if ( themeCount > 0 ) @@ -1011,8 +1011,8 @@ void __fastcall Theme_Library(int t) ++v1; } while ( (signed int)v11 < (signed int)&dMonster[1][111] ); - //LOBYTE(v8) = QuestStatus(3); - if ( !QuestStatus(3) || ta != zharlib ) + //LOBYTE(v8) = QuestStatus(QTYPE_ZHAR); + if ( !QuestStatus(QTYPE_ZHAR) || ta != zharlib ) PlaceThemeMonsts(ta, monstrnd[leveltype-1]); } // 5BB1ED: using guessed type char leveltype; diff --git a/Source/town.cpp b/Source/town.cpp index 255f20235..5dff51381 100644 --- a/Source/town.cpp +++ b/Source/town.cpp @@ -1584,7 +1584,7 @@ void __cdecl T_Pass3() while ( xx < 46 ); } } - if ( quests[13]._qactive != 3 && quests[13]._qactive ) + if ( quests[QTYPE_PW]._qactive != 3 && quests[QTYPE_PW]._qactive ) T_FillTile(P3Tiles, 60, 70, 342); else T_FillTile(P3Tiles, 60, 70, 71); diff --git a/Source/towners.cpp b/Source/towners.cpp index 8450a4c17..eebddbded 100644 --- a/Source/towners.cpp +++ b/Source/towners.cpp @@ -729,7 +729,7 @@ void __cdecl InitTowners() boyloadflag = 0; InitSmith(); InitHealer(); - if ( quests[6]._qactive && quests[6]._qactive != 3 ) + if ( quests[QTYPE_BUTCH]._qactive && quests[QTYPE_BUTCH]._qactive != 3 ) InitTownDead(); InitBarOwner(); InitTeller(); @@ -823,7 +823,7 @@ void __cdecl TownDead() towner[v1]._tAnimFrame = 1; strcpy(towner[v0]._tName, "Slain Townsman"); LABEL_6: - if ( quests[6]._qactive != 1 ) + if ( quests[QTYPE_BUTCH]._qactive != 1 ) towner[v0]._tAnimCnt = 0; } } @@ -1033,16 +1033,16 @@ void __fastcall TalkToTowner(int p, int t) InitQTextMsg(QUEST_INTRO); towner[v7]._tMsgSaid = 1; } - if ( (plr[v6]._pLvlVisited[2] || plr[v6]._pLvlVisited[4]) && quests[12]._qactive ) + if ( (plr[v6]._pLvlVisited[2] || plr[v6]._pLvlVisited[4]) && quests[QTYPE_KING]._qactive ) { - if ( !quests[12]._qvar2 && !towner[v7]._tMsgSaid ) + if ( !quests[QTYPE_KING]._qvar2 && !towner[v7]._tMsgSaid ) { - quests[12]._qvar2 = 1; - quests[12]._qlog = 1; - if ( quests[12]._qactive == 1 ) + quests[QTYPE_KING]._qvar2 = 1; + quests[QTYPE_KING]._qlog = 1; + if ( quests[QTYPE_KING]._qactive == 1 ) { - quests[12]._qactive = 2; - quests[12]._qvar1 = 1; + quests[QTYPE_KING]._qactive = 2; + quests[QTYPE_KING]._qvar1 = 1; } towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; @@ -1050,10 +1050,10 @@ void __fastcall TalkToTowner(int p, int t) towner[v7]._tMsgSaid = 1; NetSendCmdQuest(1u, 0xCu); } - if ( quests[12]._qactive == 3 && quests[12]._qvar2 == 1 && !towner[v7]._tMsgSaid ) + if ( quests[QTYPE_KING]._qactive == 3 && quests[QTYPE_KING]._qvar2 == 1 && !towner[v7]._tMsgSaid ) { - quests[12]._qvar2 = 2; - quests[12]._qvar1 = 2; + quests[QTYPE_KING]._qvar2 = 2; + quests[QTYPE_KING]._qvar1 = 2; towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_KING4); @@ -1061,28 +1061,28 @@ void __fastcall TalkToTowner(int p, int t) NetSendCmdQuest(1u, 0xCu); } } - if ( gbMaxPlayers == 1 && plr[v6]._pLvlVisited[3] && quests[7]._qactive ) + if ( gbMaxPlayers == 1 && plr[v6]._pLvlVisited[3] && quests[QTYPE_BOL]._qactive ) { - if ( (quests[7]._qactive == 1 || quests[7]._qactive == 2) && !quests[7]._qvar2 ) + if ( (quests[QTYPE_BOL]._qactive == 1 || quests[QTYPE_BOL]._qactive == 2) && !quests[QTYPE_BOL]._qvar2 ) { if ( towner[v7]._tMsgSaid ) goto LABEL_36; - quests[7]._qvar2 = 1; - if ( quests[7]._qactive == 1 ) + quests[QTYPE_BOL]._qvar2 = 1; + if ( quests[QTYPE_BOL]._qactive == 1 ) { - quests[7]._qvar1 = 1; - quests[7]._qactive = 2; + quests[QTYPE_BOL]._qvar1 = 1; + quests[QTYPE_BOL]._qactive = 2; } - quests[7]._qlog = 1; + quests[QTYPE_BOL]._qlog = 1; towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_BANNER2); towner[v7]._tMsgSaid = 1; } - if ( quests[7]._qvar2 == 1 && PlrHasItem(v3, IDI_BANNER, &inv_item_num) && !towner[v7]._tMsgSaid ) + if ( quests[QTYPE_BOL]._qvar2 == 1 && PlrHasItem(v3, IDI_BANNER, &inv_item_num) && !towner[v7]._tMsgSaid ) { - quests[7]._qactive = 3; - quests[7]._qvar1 = 3; + quests[QTYPE_BOL]._qactive = 3; + quests[QTYPE_BOL]._qvar1 = 3; RemoveInvItem(v3, inv_item_num); CreateItem(UITEM_HARCREST, towner[v7]._tx, towner[v7]._ty + 1); towner[v7]._tbtcnt = 150; @@ -1107,14 +1107,14 @@ LABEL_39: } if ( v2 == GetActiveTowner(TOWN_DEADGUY) ) { - if ( quests[6]._qactive == 2 ) + if ( quests[QTYPE_BUTCH]._qactive == 2 ) { - if ( quests[6]._qvar1 == 1 ) + if ( quests[QTYPE_BUTCH]._qvar1 == 1 ) { v11 = _LOBYTE(plr[v6]._pClass) == 0; towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; - quests[6]._qvar1 = 1; + quests[QTYPE_BUTCH]._qvar1 = 1; if ( v11 && (v12 = PS_WARR8, !effect_is_playing(PS_WARR8)) || _LOBYTE(plr[v6]._pClass) == 1 && (v12 = PS_ROGUE8, !effect_is_playing(PS_ROGUE8)) || _LOBYTE(plr[v6]._pClass) == 2 && (v12 = PS_MAGE8, !effect_is_playing(PS_MAGE8)) ) @@ -1125,27 +1125,27 @@ LABEL_53: towner[v7]._tMsgSaid = 1; return; } - if ( quests[6]._qvar1 ) + if ( quests[QTYPE_BUTCH]._qvar1 ) return; } else { - if ( quests[6]._qactive == 3 ) + if ( quests[QTYPE_BUTCH]._qactive == 3 ) { - if ( quests[6]._qvar1 != 1 ) + if ( quests[QTYPE_BUTCH]._qvar1 != 1 ) return; - quests[6]._qvar1 = 1; + quests[QTYPE_BUTCH]._qvar1 = 1; towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; goto LABEL_53; } - if ( quests[6]._qactive != 1 ) + if ( quests[QTYPE_BUTCH]._qactive != 1 ) return; } - quests[6]._qactive = 2; - quests[6]._qlog = 1; - quests[6]._qmsg = QUEST_BUTCH9; - quests[6]._qvar1 = 1; + quests[QTYPE_BUTCH]._qactive = 2; + quests[QTYPE_BUTCH]._qlog = 1; + quests[QTYPE_BUTCH]._qmsg = QUEST_BUTCH9; + quests[QTYPE_BUTCH]._qvar1 = 1; towner[v7]._tbtcnt = 50; towner[v7]._tVar1 = v3; towner[v7]._tVar2 = 3; @@ -1158,14 +1158,14 @@ LABEL_53: { if ( v2 == GetActiveTowner(TOWN_WITCH) ) { - if ( quests[1]._qactive == 1 ) + if ( quests[QTYPE_BLKM]._qactive == 1 ) { if ( PlrHasItem(v3, IDI_FUNGALTM, &inv_item_num) ) { RemoveInvItem(v3, inv_item_num); - quests[1]._qactive = 2; - quests[1]._qlog = 1; - quests[1]._qvar1 = 2; + quests[QTYPE_BLKM]._qactive = 2; + quests[QTYPE_BLKM]._qlog = 1; + quests[QTYPE_BLKM]._qvar1 = QS_TOMEGIVEN; v17 = QUEST_MUSH8; LABEL_105: towner[v7]._tVar1 = v3; @@ -1175,25 +1175,25 @@ LABEL_105: goto LABEL_106; } } - else if ( quests[1]._qactive == 2 ) + else if ( quests[QTYPE_BLKM]._qactive == 2 ) { - if ( quests[1]._qvar1 >= 2u && quests[1]._qvar1 <= 4u ) + if ( quests[QTYPE_BLKM]._qvar1 >= QS_TOMEGIVEN && quests[QTYPE_BLKM]._qvar1 <= QS_MUSHPICKED ) { if ( PlrHasItem(v3, IDI_MUSHROOM, &inv_item_num) ) { RemoveInvItem(v3, inv_item_num); - Qtalklist[6]._qblkm = -1; - quests[1]._qvar1 = 5; - Qtalklist[1]._qblkm = 123; + Qtalklist[TOWN_WITCH]._qblkm = -1; + quests[QTYPE_BLKM]._qvar1 = QS_MUSHGIVEN; + Qtalklist[TOWN_HEALER]._qblkm = QUEST_MUSH3; v17 = QUEST_MUSH10; } else { v17 = QUEST_MUSH9; - if ( quests[1]._qmsg == QUEST_MUSH9 ) + if ( quests[QTYPE_BLKM]._qmsg == QUEST_MUSH9 ) goto LABEL_106; } - quests[1]._qmsg = v17; + quests[QTYPE_BLKM]._qmsg = v17; goto LABEL_105; } Item = PlrHasItem(v3, IDI_SPECELIX, &inv_item_num); @@ -1202,16 +1202,16 @@ LABEL_105: towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_MUSH12); - quests[1]._qactive = 3; + quests[QTYPE_BLKM]._qactive = 3; towner[v7]._tMsgSaid = 1; AllItemsList[Item->IDidx].iUsable = 1; } else if ( PlrHasItem(v3, IDI_BRAIN, &inv_item_num) ) { v17 = QUEST_MUSH11; - if ( quests[1]._qvar2 != QUEST_MUSH11 ) + if ( quests[QTYPE_BLKM]._qvar2 != QUEST_MUSH11 ) { - quests[1]._qvar2 = QUEST_MUSH11; + quests[QTYPE_BLKM]._qvar2 = QUEST_MUSH11; goto LABEL_105; } } @@ -1260,12 +1260,12 @@ LABEL_106: goto LABEL_131; if ( plr[v6]._pLvlVisited[1] && !towner[v7]._tMsgSaid ) { - if ( quests[13]._qactive == 1 ) + if ( quests[QTYPE_PW]._qactive == 1 ) { - quests[13]._qactive = 2; - quests[13]._qlog = 1; - quests[13]._qmsg = QUEST_POISON3; - quests[13]._qvar1 = 1; + quests[QTYPE_PW]._qactive = 2; + quests[QTYPE_PW]._qlog = 1; + quests[QTYPE_PW]._qmsg = QUEST_POISON3; + quests[QTYPE_PW]._qvar1 = 1; towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_POISON3); @@ -1273,9 +1273,9 @@ LABEL_126: towner[v7]._tMsgSaid = 1; goto LABEL_127; } - if ( quests[13]._qactive == 3 && quests[13]._qvar1 != 2 ) + if ( quests[QTYPE_PW]._qactive == 3 && quests[QTYPE_PW]._qvar1 != 2 ) { - quests[13]._qvar1 = 2; + quests[QTYPE_PW]._qvar1 = 2; towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_POISON5); @@ -1284,13 +1284,13 @@ LABEL_126: } } LABEL_127: - if ( quests[1]._qactive == 2 && quests[1]._qmsg == QUEST_MUSH10 && PlrHasItem(v3, IDI_BRAIN, &inv_item_num) ) + if ( quests[QTYPE_BLKM]._qactive == 2 && quests[QTYPE_BLKM]._qmsg == QUEST_MUSH10 && PlrHasItem(v3, IDI_BRAIN, &inv_item_num) ) { RemoveInvItem(v3, inv_item_num); SpawnQuestItem(IDI_SPECELIX, towner[v7]._tx, towner[v7]._ty + 1, 0, 0); InitQTextMsg(QUEST_MUSH4); - Qtalklist[1]._qblkm = -1; - quests[1]._qvar1 = 7; + Qtalklist[TOWN_HEALER]._qblkm = -1; + quests[QTYPE_BLKM]._qvar1 = QS_BRAINGIVEN; } LABEL_131: if ( !qtextflag ) @@ -1325,57 +1325,57 @@ LABEL_131: } if ( gbMaxPlayers == 1 ) { - if ( quests[15]._qactive == 1 ) + if ( quests[QTYPE_VB]._qactive == 1 ) { if ( !PlrHasItem(v3, IDI_LAZSTAFF, &inv_item_num) ) goto LABEL_154; RemoveInvItem(v3, inv_item_num); - quests[15]._qvar1 = 2; + quests[QTYPE_VB]._qvar1 = 2; towner[v7]._tbtcnt = QUEST_STORY1; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_VILE1); - quests[15]._qactive = 2; - quests[15]._qlog = 1; + quests[QTYPE_VB]._qactive = 2; + quests[QTYPE_VB]._qlog = 1; } else { - if ( quests[15]._qactive != 3 || quests[15]._qvar1 != 7 ) + if ( quests[QTYPE_VB]._qactive != 3 || quests[QTYPE_VB]._qvar1 != 7 ) goto LABEL_154; - quests[15]._qvar1 = 8; + quests[QTYPE_VB]._qvar1 = 8; towner[v7]._tbtcnt = QUEST_STORY1; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_VILE3); - quests[5]._qlog = 1; + quests[QTYPE_VB]._qlog = 1; } v11 = gbMaxPlayers == 1; towner[v7]._tMsgSaid = 1; if ( v11 ) goto LABEL_154; } - if ( quests[15]._qactive == 2 ) + if ( quests[QTYPE_VB]._qactive == 2 ) { - if ( !quests[15]._qlog ) + if ( !quests[QTYPE_VB]._qlog ) { towner[v7]._tbtcnt = QUEST_STORY1; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_VILE1); towner[v7]._tMsgSaid = 1; - quests[15]._qlog = 1; + quests[QTYPE_VB]._qlog = 1; v19 = 15; LABEL_153: NetSendCmdQuest(1u, v19); goto LABEL_154; } } - else if ( quests[15]._qactive == 3 && quests[15]._qvar1 == 7 ) + else if ( quests[QTYPE_VB]._qactive == 3 && quests[QTYPE_VB]._qvar1 == 7 ) { - quests[15]._qvar1 = 8; + quests[QTYPE_VB]._qvar1 = 8; towner[v7]._tbtcnt = QUEST_STORY1; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_VILE3); towner[v7]._tMsgSaid = 1; NetSendCmdQuest(1u, 0xFu); - quests[5]._qlog = 1; + quests[QTYPE_VB]._qlog = 1; v19 = 5; goto LABEL_153; } @@ -1393,27 +1393,27 @@ LABEL_154: } if ( gbMaxPlayers == 1 ) { - if ( plr[v6]._pLvlVisited[4] != 0 && quests[0]._qactive ) + if ( plr[v6]._pLvlVisited[4] != 0 && quests[QTYPE_INFRA]._qactive ) { - if ( quests[0]._qvar2 == 0 ) + if ( quests[QTYPE_INFRA]._qvar2 == 0 ) { - quests[0]._qvar2 = 1; - quests[0]._qlog = 1; - if ( quests[0]._qactive == 1 ) + quests[QTYPE_INFRA]._qvar2 = 1; + quests[QTYPE_INFRA]._qlog = 1; + if ( quests[QTYPE_INFRA]._qactive == 1 ) { - quests[0]._qactive = 2; - quests[0]._qvar1 = 1; + quests[QTYPE_INFRA]._qactive = 2; + quests[QTYPE_INFRA]._qvar1 = 1; } towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_INFRA5); towner[v7]._tMsgSaid = 1; } - if ( quests[0]._qvar2 == 1 && PlrHasItem(v3, IDI_ROCK, &inv_item_num) && !towner[v7]._tMsgSaid ) + if ( quests[QTYPE_INFRA]._qvar2 == 1 && PlrHasItem(v3, IDI_ROCK, &inv_item_num) && !towner[v7]._tMsgSaid ) { - quests[0]._qactive = 3; - quests[0]._qvar2 = 2; - quests[0]._qvar1 = 2; + quests[QTYPE_INFRA]._qactive = 3; + quests[QTYPE_INFRA]._qvar2 = 2; + quests[QTYPE_INFRA]._qvar1 = 2; RemoveInvItem(v3, inv_item_num); CreateItem(UITEM_INFRARING, towner[v7]._tx, towner[v7]._ty + 1); towner[v7]._tbtcnt = 150; @@ -1422,29 +1422,29 @@ LABEL_154: towner[v7]._tMsgSaid = 1; } } - if ( plr[v6]._pLvlVisited[9] && quests[10]._qactive ) + if ( plr[v6]._pLvlVisited[9] && quests[QTYPE_ANVIL]._qactive ) { - if ( (quests[10]._qactive == 1 || quests[10]._qactive == 2) && !quests[10]._qvar2 ) + if ( (quests[QTYPE_ANVIL]._qactive == 1 || quests[QTYPE_ANVIL]._qactive == 2) && !quests[QTYPE_ANVIL]._qvar2 ) { - if ( towner[v7]._tMsgSaid || quests[0]._qvar2 != 2 && (quests[0]._qactive != 2 || quests[0]._qvar2 != 1) ) + if ( towner[v7]._tMsgSaid || quests[QTYPE_INFRA]._qvar2 != 2 && (quests[QTYPE_INFRA]._qactive != 2 || quests[QTYPE_INFRA]._qvar2 != 1) ) goto LABEL_86; - quests[10]._qvar2 = 1; - quests[10]._qlog = 1; - if ( quests[10]._qactive == 1 ) + quests[QTYPE_ANVIL]._qvar2 = 1; + quests[QTYPE_ANVIL]._qlog = 1; + if ( quests[QTYPE_ANVIL]._qactive == 1 ) { - quests[10]._qactive = 2; - quests[10]._qvar1 = 1; + quests[QTYPE_ANVIL]._qactive = 2; + quests[QTYPE_ANVIL]._qvar1 = 1; } towner[v7]._tbtcnt = 150; towner[v7]._tVar1 = v3; InitQTextMsg(QUEST_ANVIL5); towner[v7]._tMsgSaid = 1; } - if ( quests[10]._qvar2 == 1 && PlrHasItem(v3, IDI_ANVIL, &inv_item_num) && !towner[v7]._tMsgSaid ) + if ( quests[QTYPE_ANVIL]._qvar2 == 1 && PlrHasItem(v3, IDI_ANVIL, &inv_item_num) && !towner[v7]._tMsgSaid ) { - quests[10]._qactive = 3; - quests[10]._qvar2 = 2; - quests[10]._qvar1 = 2; + quests[QTYPE_ANVIL]._qactive = 3; + quests[QTYPE_ANVIL]._qvar2 = 2; + quests[QTYPE_ANVIL]._qvar1 = 2; RemoveInvItem(v3, inv_item_num); CreateItem(UITEM_GRISWOLD, towner[v7]._tx, towner[v7]._ty + 1); towner[v7]._tbtcnt = 150; diff --git a/Source/trigs.cpp b/Source/trigs.cpp index 646f2f57f..4a0d6441f 100644 --- a/Source/trigs.cpp +++ b/Source/trigs.cpp @@ -239,7 +239,7 @@ void __cdecl InitL2Triggers() v6 = v5; do { - if ( (*v6)[0] == 267 && (v0 != quests[14]._qtx || v7 != quests[14]._qty) ) + if ( (*v6)[0] == 267 && (v0 != quests[QTYPE_BONE]._qtx || v7 != quests[QTYPE_BONE]._qty) ) { ++trigflag[4]; v8 += 4; @@ -428,7 +428,7 @@ void __cdecl InitL4Triggers() v8 = &trigs[trigflag[4]]._ty; do { - if ( (*v6)[0] == 370 && quests[15]._qactive == 3 ) + if ( (*v6)[0] == 370 && quests[QTYPE_VB]._qactive == 3 ) { ++trigflag[4]; *(v8 - 1) = v7; @@ -1133,7 +1133,7 @@ unsigned char __cdecl ForceSKingTrig() if ( *v1 == -1 ) return 0; } - sprintf(infostr, "Back to Level %i", (unsigned char)quests[12]._qlevel); + sprintf(infostr, "Back to Level %i", (unsigned char)quests[QTYPE_KING]._qlevel); cursmx = trigs[0]._tx; cursmy = trigs[0]._ty; return 1; @@ -1155,7 +1155,7 @@ unsigned char __cdecl ForceSChambTrig() if ( *v1 == -1 ) return 0; } - sprintf(infostr, "Back to Level %i", (unsigned char)quests[14]._qlevel); + sprintf(infostr, "Back to Level %i", (unsigned char)quests[QTYPE_BONE]._qlevel); cursmx = trigs[0]._tx; cursmy = trigs[0]._ty; return 1; @@ -1177,7 +1177,7 @@ unsigned char __cdecl ForcePWaterTrig() if ( *v1 == -1 ) return 0; } - sprintf(infostr, "Back to Level %i", (unsigned char)quests[13]._qlevel); + sprintf(infostr, "Back to Level %i", (unsigned char)quests[QTYPE_PW]._qlevel); cursmx = trigs[0]._tx; cursmy = trigs[0]._ty; return 1; diff --git a/enums.h b/enums.h index aa427c684..6320f2e53 100644 --- a/enums.h +++ b/enums.h @@ -2412,6 +2412,18 @@ enum quest_id QTYPE_INVALID = 0xFFFFFFFF, }; +enum quest_mush_state +{ + QS_INIT = 0, + QS_TOMESPAWNED = 1, + QS_TOMEGIVEN = 2, + QS_MUSHSPAWNED = 3, + QS_MUSHPICKED = 4, + QS_MUSHGIVEN = 5, + QS_BRAINSPAWNED = 6, + QS_BRAINGIVEN = 7 +}; + enum talk_id { STORE_NONE = 0x0,