Browse Source

Use quest enum values (#362)

* add/assign enums related to Black Mushroom quests

* plug in more quest enum values
pull/4/head
squidcc 8 years ago committed by Robin Eklind
parent
commit
51bfa2353b
  1. 2
      Source/diablo.cpp
  2. 14
      Source/drlg_l1.cpp
  3. 16
      Source/drlg_l2.cpp
  4. 6
      Source/drlg_l3.cpp
  5. 30
      Source/drlg_l4.cpp
  6. 24
      Source/inv.cpp
  7. 10
      Source/items.cpp
  8. 74
      Source/monster.cpp
  9. 114
      Source/objects.cpp
  10. 218
      Source/quests.cpp
  11. 8
      Source/themes.cpp
  12. 2
      Source/town.cpp
  13. 188
      Source/towners.cpp
  14. 10
      Source/trigs.cpp
  15. 12
      enums.h

2
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;

14
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) {

16
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;
}

6
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;

30
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 )

24
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 )

10
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);

74
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) )
{

114
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 )

218
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;

8
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;

2
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);

188
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;

10
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;

12
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,

Loading…
Cancel
Save