From 39e3de683d976bbf60e6f2240430d92af2326ec1 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 18 Oct 2020 15:08:23 +0200 Subject: [PATCH] [hellfire] TalkToTowner --- Source/towners.cpp | 101 +++++++++++++++++++++++++++++++-------------- 1 file changed, 71 insertions(+), 30 deletions(-) diff --git a/Source/towners.cpp b/Source/towners.cpp index 3e0d59fc0..e8a90b33e 100644 --- a/Source/towners.cpp +++ b/Source/towners.cpp @@ -799,6 +799,9 @@ void TalkToTowner(int p, int t) towner[t]._tMsgSaid = TRUE; } if ((plr[p]._pLvlVisited[2] || plr[p]._pLvlVisited[4]) && quests[Q_SKELKING]._qactive != QUEST_NOTAVAIL) { +#ifdef HELLFIRE + if (quests[Q_SKELKING]._qactive != QUEST_NOTAVAIL) +#endif if (quests[Q_SKELKING]._qvar2 == 0 && !towner[t]._tMsgSaid) { quests[Q_SKELKING]._qvar2 = 1; quests[Q_SKELKING]._qlog = TRUE; @@ -822,7 +825,8 @@ void TalkToTowner(int p, int t) NetSendCmdQuest(TRUE, Q_SKELKING); } } - if (gbMaxPlayers == 1 && plr[p]._pLvlVisited[3] && quests[Q_LTBANNER]._qactive != QUEST_NOTAVAIL) { + if (gbMaxPlayers == 1) { + if (plr[p]._pLvlVisited[3] && quests[Q_LTBANNER]._qactive != QUEST_NOTAVAIL) { if ((quests[Q_LTBANNER]._qactive == QUEST_INIT || quests[Q_LTBANNER]._qactive == QUEST_ACTIVE) && quests[Q_LTBANNER]._qvar2 == 0 && !towner[t]._tMsgSaid) { quests[Q_LTBANNER]._qvar2 = 1; if (quests[Q_LTBANNER]._qactive == QUEST_INIT) { @@ -835,9 +839,11 @@ void TalkToTowner(int p, int t) InitQTextMsg(TEXT_BANNER2); towner[t]._tMsgSaid = TRUE; } - if (quests[Q_LTBANNER]._qvar2 == 1 && PlrHasItem(p, IDI_BANNER, i) != NULL) { -#ifndef HELLFIRE - if (!towner[t]._tMsgSaid) { +#ifdef HELLFIRE + } + if (!towner[t]._tMsgSaid && PlrHasItem(p, IDI_BANNER, i) != NULL) { +#else + if (quests[Q_LTBANNER]._qvar2 == 1 && PlrHasItem(p, IDI_BANNER, i) != NULL && !towner[t]._tMsgSaid) { #endif quests[Q_LTBANNER]._qactive = QUEST_DONE; quests[Q_LTBANNER]._qvar1 = 3; @@ -847,11 +853,11 @@ void TalkToTowner(int p, int t) towner[t]._tVar1 = p; InitQTextMsg(TEXT_BANNER3); towner[t]._tMsgSaid = TRUE; + } + } #ifndef HELLFIRE } #endif - } - } if (!qtextflag) { TownerTalk(TEXT_OGDEN1, t); if (storeflag) { @@ -901,6 +907,9 @@ void TalkToTowner(int p, int t) } else if (t == GetActiveTowner(TOWN_SMITH)) { if (gbMaxPlayers == 1) { if (plr[p]._pLvlVisited[4] && quests[Q_ROCK]._qactive != QUEST_NOTAVAIL) { +#ifdef HELLFIRE + if (quests[Q_ROCK]._qactive != QUEST_NOTAVAIL) +#endif if (quests[Q_ROCK]._qvar2 == 0) { quests[Q_ROCK]._qvar2 = 1; quests[Q_ROCK]._qlog = TRUE; @@ -913,9 +922,11 @@ void TalkToTowner(int p, int t) InitQTextMsg(TEXT_INFRA5); towner[t]._tMsgSaid = TRUE; } - if (quests[Q_ROCK]._qvar2 == 1 && PlrHasItem(p, IDI_ROCK, i) != NULL) { -#ifndef HELLFIRE - if (!towner[t]._tMsgSaid) { +#ifdef HELLFIRE + } + if (!towner[t]._tMsgSaid && PlrHasItem(p, IDI_ROCK, i) != NULL) { +#else + if (quests[Q_ROCK]._qvar2 == 1 && PlrHasItem(p, IDI_ROCK, i) != NULL && !towner[t]._tMsgSaid) { #endif quests[Q_ROCK]._qactive = QUEST_DONE; quests[Q_ROCK]._qvar2 = 2; @@ -926,11 +937,10 @@ void TalkToTowner(int p, int t) towner[t]._tVar1 = p; InitQTextMsg(TEXT_INFRA7); towner[t]._tMsgSaid = TRUE; -#ifndef HELLFIRE } -#endif +#ifndef HELLFIRE } - } +#endif if (plr[p]._pLvlVisited[9] && quests[Q_ANVIL]._qactive != QUEST_NOTAVAIL) { if ((quests[Q_ANVIL]._qactive == QUEST_INIT || quests[Q_ANVIL]._qactive == QUEST_ACTIVE) && quests[Q_ANVIL]._qvar2 == 0 && !towner[t]._tMsgSaid) { if (quests[Q_ROCK]._qvar2 == 2 || quests[Q_ROCK]._qactive == QUEST_ACTIVE && quests[Q_ROCK]._qvar2 == 1) { @@ -946,8 +956,11 @@ void TalkToTowner(int p, int t) towner[t]._tMsgSaid = TRUE; } } +#ifdef HELLFIRE + } + if (!towner[t]._tMsgSaid && PlrHasItem(p, IDI_ANVIL, i) != NULL) { +#else if (quests[Q_ANVIL]._qvar2 == 1 && PlrHasItem(p, IDI_ANVIL, i) != NULL) { -#ifndef HELLFIRE if (!towner[t]._tMsgSaid) { #endif quests[Q_ANVIL]._qactive = QUEST_DONE; @@ -961,8 +974,8 @@ void TalkToTowner(int p, int t) towner[t]._tMsgSaid = TRUE; #ifndef HELLFIRE } -#endif } +#endif } } if (!qtextflag) { @@ -1030,7 +1043,7 @@ void TalkToTowner(int p, int t) quests[Q_GRAVE]._qactive = 2; quests[Q_GRAVE]._qlog = 1; quests[Q_GRAVE]._qmsg = TEXT_GRAVE8; - InitQTextMsg(Q_GRAVE); + InitQTextMsg(TEXT_GRAVE8); towner[t]._tMsgSaid = TRUE; } #endif @@ -1050,10 +1063,11 @@ void TalkToTowner(int p, int t) } else if (t == GetActiveTowner(TOWN_HEALER)) { if (gbMaxPlayers == 1) { #ifdef HELLFIRE - if ((plr[p]._pLvlVisited[1] || plr[p]._pLvlVisited[5]) && !towner[t]._tMsgSaid) { + if (plr[p]._pLvlVisited[1] || plr[p]._pLvlVisited[5]) { #else - if (plr[p]._pLvlVisited[1] && !towner[t]._tMsgSaid) { + if (plr[p]._pLvlVisited[1]) { #endif + if (!towner[t]._tMsgSaid) { if (quests[Q_PWATER]._qactive == QUEST_INIT) { quests[Q_PWATER]._qactive = QUEST_ACTIVE; quests[Q_PWATER]._qlog = TRUE; @@ -1072,6 +1086,7 @@ void TalkToTowner(int p, int t) towner[t]._tMsgSaid = TRUE; } } + } if (quests[Q_MUSHROOM]._qactive == QUEST_ACTIVE && quests[Q_MUSHROOM]._qmsg == TEXT_MUSH10 && PlrHasItem(p, IDI_BRAIN, i) != NULL) { RemoveInvItem(p, i); SpawnQuestItem(IDI_SPECELIX, towner[t]._tx, towner[t]._ty + 1, 0, 0); @@ -1144,6 +1159,8 @@ void TalkToTowner(int p, int t) #ifdef HELLFIRE } else if (towner[t]._ttype == TOWN_FARMER) { if (!qtextflag) { + qt = 277; + t2 = 1; switch (quests[Q_FARMER]._qactive) { case 0: if (PlrHasItem(p, IDI_RUNEBOMB, i)) { @@ -1152,8 +1169,15 @@ void TalkToTowner(int p, int t) quests[Q_FARMER]._qvar1 = 1; quests[Q_FARMER]._qlog = 1; quests[Q_FARMER]._qmsg = TEXT_FARMER1; + break; } else if (!plr[myplr]._pLvlVisited[9] && plr[myplr]._pLevel < 15) { - qt = !PlrHasItem(p, IDI_RUNEBOMB, i) ? TEXT_FARMER3 : TEXT_FARMER2; + qt = 309; + if (plr[myplr]._pLvlVisited[2]) + qt = 281; + if (plr[myplr]._pLvlVisited[5]) + qt = 308; + if (plr[myplr]._pLvlVisited[7]) + qt = 310; } else { qt = TEXT_FARMER1; quests[Q_FARMER]._qactive = 2; @@ -1161,7 +1185,14 @@ void TalkToTowner(int p, int t) quests[Q_FARMER]._qlog = 1; quests[Q_FARMER]._qmsg = TEXT_FARMER1; SpawnRuneBomb(towner[t]._tx + 1, towner[t]._ty); + t2 = 1; + break; } + case 2: + if (PlrHasItem(p, IDI_RUNEBOMB, i)) + qt = TEXT_FARMER2; + else + qt = TEXT_FARMER3; break; case 1: if (PlrHasItem(p, IDI_RUNEBOMB, i)) { @@ -1188,16 +1219,15 @@ void TalkToTowner(int p, int t) quests[Q_FARMER]._qlog = 1; quests[Q_FARMER]._qmsg = TEXT_FARMER1; SpawnRuneBomb(towner[t]._tx + 1, towner[t]._ty); + t2 = 1; } break; - case 2: - qt = !PlrHasItem(p, IDI_RUNEBOMB, i) ? TEXT_FARMER3 : TEXT_FARMER2; - break; case 3: qt = TEXT_FARMER4; SpawnRewardItem(IDI_AURIC, towner[t]._tx + 1, towner[t]._ty); quests[Q_FARMER]._qactive = 10; quests[Q_FARMER]._qlog = 0; + t2 = 1; break; case 10: qt = -1; @@ -1208,7 +1238,10 @@ void TalkToTowner(int p, int t) break; } if (qt != -1) { + if (t2) InitQTextMsg(qt); + else + PlaySFX(alltext[qt].sfxnr); } if (gbMaxPlayers != 1) { NetSendCmdQuest(TRUE, Q_FARMER); @@ -1216,6 +1249,8 @@ void TalkToTowner(int p, int t) } } else if (towner[t]._ttype == TOWN_COWFARM) { if (!qtextflag) { + qt = 297; + t2 = 1; if (PlrHasItem(p, IDI_GREYSUIT, i)) { qt = TEXT_JERSEY7; RemoveInvItem(p, i); @@ -1237,13 +1272,14 @@ void TalkToTowner(int p, int t) quests[Q_JERSEY]._qactive = 7; break; case 1: - qt = TEXT_JERSEY5; + qt = TEXT_JERSEY1; + quests[23]._qactive = 7; break; case 2: - qt = TEXT_JERSEY1; + qt = TEXT_JERSEY5; break; case 3: - qt = TEXT_JERSEY5; + qt = TEXT_JERSEY1; break; case 7: qt = TEXT_JERSEY2; @@ -1255,20 +1291,20 @@ void TalkToTowner(int p, int t) break; case 9: if (!plr[myplr]._pLvlVisited[9] && plr[myplr]._pLevel < 15) { - switch (random_(0, 4)) { - case 0: + switch (random_(0, 4) + 9) { + case 9: qt = TEXT_JERSEY9; break; - case 1: + case 10: qt = TEXT_JERSEY10; break; - case 2: + case 11: qt = TEXT_JERSEY11; break; default: qt = TEXT_JERSEY12; - break; } + break; } else { qt = TEXT_JERSEY4; quests[Q_JERSEY]._qactive = 2; @@ -1276,6 +1312,7 @@ void TalkToTowner(int p, int t) quests[Q_JERSEY]._qmsg = TEXT_JERSEY4; quests[Q_JERSEY]._qlog = 1; SpawnRuneBomb(towner[t]._tx + 1, towner[t]._ty); + t2 = 1; } break; default: @@ -1285,7 +1322,10 @@ void TalkToTowner(int p, int t) } } if (qt != -1) { + if (t2) InitQTextMsg(qt); + else + PlaySFX(alltext[qt].sfxnr); } if (gbMaxPlayers != 1) { NetSendCmdQuest(TRUE, Q_JERSEY); @@ -1293,9 +1333,10 @@ void TalkToTowner(int p, int t) } } else if (towner[t]._ttype == TOWN_GIRL) { if (!qtextflag) { + qt = 282; t2 = 0; if (!PlrHasItem(p, IDI_THEODORE, i) || quests[Q_GIRL]._qactive == 3) { - switch (quests[Q_FARMER]._qactive) { + switch (quests[Q_GIRL]._qactive) { case 0: qt = TEXT_GIRL2; quests[Q_GIRL]._qactive = 2;