Browse Source

Merge pull request #1100 from galaxyhaxz/CQuest

CheckQuests
pull/100/head
Robin Eklind 7 years ago committed by GitHub
parent
commit
62edabac88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 110
      Source/quests.cpp

110
Source/quests.cpp

@ -126,76 +126,72 @@ void InitQuests()
void CheckQuests()
{
//int v0; // eax
unsigned char *v1; // esi
unsigned char v2; // cl
//_LOBYTE(v0) = QuestStatus(QTYPE_VB);
if (QuestStatus(QTYPE_VB)) {
if (gbMaxPlayers == 1)
goto LABEL_6;
if (quests[QTYPE_VB]._qvar1 == 2) {
AddObject(OBJ_ALTBOY, 2 * setpc_x + 20, 2 * setpc_y + 22);
quests[QTYPE_VB]._qvar1 = 3;
NetSendCmdQuest(TRUE, 0xFu);
}
int i, rportx, rporty;
if(QuestStatus(QTYPE_VB) && gbMaxPlayers != 1 && quests[QTYPE_VB]._qvar1 == 2) {
AddObject(OBJ_ALTBOY, 2 * setpc_x + 20, 2 * setpc_y + 22);
quests[QTYPE_VB]._qvar1 = 3;
NetSendCmdQuest(TRUE, QTYPE_VB);
}
if (gbMaxPlayers != 1)
if(gbMaxPlayers != 1) {
return;
LABEL_6:
if (currlevel == quests[QTYPE_VB]._qlevel && !setlevel && quests[QTYPE_VB]._qvar1 >= 2u) {
if (quests[QTYPE_VB]._qactive != 2 && quests[QTYPE_VB]._qactive != 3)
goto LABEL_29;
if (!quests[QTYPE_VB]._qvar2 || quests[QTYPE_VB]._qvar2 == 2) {
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, MIS_RPORTAL, 0, myplr, 0, 0);
quests[QTYPE_VB]._qvar2 = 1;
if (quests[QTYPE_VB]._qactive == 2)
quests[QTYPE_VB]._qvar1 = 3;
}
}
if (quests[QTYPE_VB]._qactive == 3) {
if (!setlevel)
goto LABEL_29;
if (setlvlnum == SL_VILEBETRAYER && quests[QTYPE_VB]._qvar2 == 4) {
AddMissile(35, 32, 35, 32, 0, MIS_RPORTAL, 0, myplr, 0, 0);
quests[QTYPE_VB]._qvar2 = 3;
if(currlevel == quests[QTYPE_VB]._qlevel
&& !setlevel
&& quests[QTYPE_VB]._qvar1 >= 2
&& (quests[QTYPE_VB]._qactive == 2 || quests[QTYPE_VB]._qactive == 3)
&& (quests[QTYPE_VB]._qvar2 == 0 || quests[QTYPE_VB]._qvar2 == 2)) {
quests[QTYPE_VB]._qtx = 2 * quests[QTYPE_VB]._qtx + 16;
quests[QTYPE_VB]._qty = 2 * quests[QTYPE_VB]._qty + 16;
rportx = quests[QTYPE_VB]._qtx;
rporty = quests[QTYPE_VB]._qty;
AddMissile(rportx, rporty, rportx, rporty, 0, MIS_RPORTAL, 0, myplr, 0, 0);
quests[QTYPE_VB]._qvar2 = 1;
if(quests[QTYPE_VB]._qactive == 2) {
quests[QTYPE_VB]._qvar1 = 3;
}
}
if (setlevel) {
if (setlvlnum == quests[QTYPE_PW]._qslvl
&& quests[QTYPE_PW]._qactive != 1
&& leveltype == quests[QTYPE_PW]._qlvltype
&& nummonsters == 4
&& quests[QTYPE_PW]._qactive != 3) {
if(quests[QTYPE_VB]._qactive == 3
&& setlevel
&& setlvlnum == SL_VILEBETRAYER
&& quests[QTYPE_VB]._qvar2 == 4) {
rportx = 35;
rporty = 32;
AddMissile(rportx, rporty, rportx, rporty, 0, MIS_RPORTAL, 0, myplr, 0, 0);
quests[QTYPE_VB]._qvar2 = 3;
}
if(setlevel) {
if(setlvlnum == quests[QTYPE_PW]._qslvl
&& quests[QTYPE_PW]._qactive != 1
&& leveltype == quests[QTYPE_PW]._qlvltype
&& nummonsters == 4
&& quests[QTYPE_PW]._qactive != 3) {
quests[QTYPE_PW]._qactive = 3;
PlaySfxLoc(IS_QUESTDN, plr[myplr].WorldX, plr[myplr].WorldY);
LoadPalette("Levels\\L3Data\\L3pwater.pal");
WaterDone = 32;
}
if (WaterDone > 0) {
if(WaterDone > 0) {
palette_update_quest_palette(WaterDone);
--WaterDone;
}
return;
}
LABEL_29:
if (plr[myplr]._pmode == PM_STAND) {
v1 = &quests[0]._qactive;
do {
if (currlevel == *(v1 - 2)) {
v2 = v1[10];
if (v2) {
if (*v1 && plr[myplr].WorldX == *(_DWORD *)(v1 + 2) && plr[myplr].WorldY == *(_DWORD *)(v1 + 6)) {
if (v1[1] != -1)
setlvltype = v1[1];
StartNewLvl(myplr, WM_DIABSETLVL, v2);
}
WaterDone--;
}
} else if(plr[myplr]._pmode == PM_STAND) {
for(i = 0; i < MAXQUESTS; i++) {
if(currlevel == quests[i]._qlevel
&& quests[i]._qslvl != 0
&& quests[i]._qactive != 0
&& plr[myplr].WorldX == quests[i]._qtx
&& plr[myplr].WorldY == quests[i]._qty) {
if(quests[i]._qlvltype != 255) {
setlvltype = quests[i]._qlvltype;
}
StartNewLvl(myplr, WM_DIABSETLVL, quests[i]._qslvl);
}
v1 += 24;
} while ((signed int)v1 < (signed int)&quests[MAXQUESTS]._qactive);
}
}
}
// 5BB1ED: using guessed type char leveltype;

Loading…
Cancel
Save