Browse Source

🐛 Fix overflow in Qtalklist

pull/1164/head
Anders Jenbo 5 years ago
parent
commit
37bdeb74db
  1. 18
      Source/stores.cpp
  2. 13
      Source/towners.cpp

18
Source/stores.cpp

@ -18,7 +18,7 @@ int stextshold;
ItemStruct premiumitem[SMITH_PREMIUM_ITEMS]; ItemStruct premiumitem[SMITH_PREMIUM_ITEMS];
BYTE *pSTextBoxCels; BYTE *pSTextBoxCels;
int premiumlevel; int premiumlevel;
int talker; _talker_id talker;
STextStruct stext[STORE_LINES]; STextStruct stext[STORE_LINES];
char stextsize; char stextsize;
int stextsmax; int stextsmax;
@ -1814,7 +1814,7 @@ void S_SmithEnter()
{ {
switch (stextsel) { switch (stextsel) {
case 10: case 10:
talker = 0; talker = TOWN_SMITH;
stextlhold = 10; stextlhold = 10;
stextshold = STORE_SMITH; stextshold = STORE_SMITH;
gossipstart = TEXT_GRISWOLD2; gossipstart = TEXT_GRISWOLD2;
@ -2211,7 +2211,7 @@ void S_WitchEnter()
switch (stextsel) { switch (stextsel) {
case 12: case 12:
stextlhold = 12; stextlhold = 12;
talker = 6; talker = TOWN_WITCH;
stextshold = STORE_WITCH; stextshold = STORE_WITCH;
gossipstart = TEXT_ADRIA2; gossipstart = TEXT_ADRIA2;
gossipend = TEXT_ADRIA13; gossipend = TEXT_ADRIA13;
@ -2370,7 +2370,7 @@ void S_BoyEnter()
StartStore(STORE_BBOY); StartStore(STORE_BBOY);
} }
} else if (stextsel == 8 && !boyitem.isEmpty() || stextsel == 12 && boyitem.isEmpty()) { } else if (stextsel == 8 && !boyitem.isEmpty() || stextsel == 12 && boyitem.isEmpty()) {
talker = 8; talker = TOWN_PEGBOY;
stextshold = STORE_BOY; stextshold = STORE_BOY;
stextlhold = stextsel; stextlhold = stextsel;
gossipstart = TEXT_WIRT2; gossipstart = TEXT_WIRT2;
@ -2547,7 +2547,7 @@ void S_HealerEnter()
switch (stextsel) { switch (stextsel) {
case 12: case 12:
stextlhold = 12; stextlhold = 12;
talker = 1; talker = TOWN_HEALER;
stextshold = STORE_HEALER; stextshold = STORE_HEALER;
gossipstart = TEXT_PEPIN2; gossipstart = TEXT_PEPIN2;
gossipend = TEXT_PEPIN11; gossipend = TEXT_PEPIN11;
@ -2602,7 +2602,7 @@ void S_StoryEnter()
switch (stextsel) { switch (stextsel) {
case 12: case 12:
stextlhold = 12; stextlhold = 12;
talker = 4; talker = TOWN_STORY;
stextshold = STORE_STORY; stextshold = STORE_STORY;
gossipstart = TEXT_STORY2; gossipstart = TEXT_STORY2;
gossipend = TEXT_STORY11; gossipend = TEXT_STORY11;
@ -2682,7 +2682,7 @@ void S_TavernEnter()
switch (stextsel) { switch (stextsel) {
case 12: case 12:
stextlhold = 12; stextlhold = 12;
talker = 3; talker = TOWN_TAVERN;
stextshold = STORE_TAVERN; stextshold = STORE_TAVERN;
gossipstart = TEXT_OGDEN2; gossipstart = TEXT_OGDEN2;
gossipend = TEXT_OGDEN10; gossipend = TEXT_OGDEN10;
@ -2699,7 +2699,7 @@ void S_BarmaidEnter()
switch (stextsel) { switch (stextsel) {
case 12: case 12:
stextlhold = 12; stextlhold = 12;
talker = 7; talker = TOWN_BMAID;
stextshold = STORE_BARMAID; stextshold = STORE_BARMAID;
gossipstart = TEXT_GILLIAN2; gossipstart = TEXT_GILLIAN2;
gossipend = TEXT_GILLIAN10; gossipend = TEXT_GILLIAN10;
@ -2716,7 +2716,7 @@ void S_DrunkEnter()
switch (stextsel) { switch (stextsel) {
case 12: case 12:
stextlhold = 12; stextlhold = 12;
talker = 5; talker = TOWN_DRUNK;
stextshold = STORE_DRUNK; stextshold = STORE_DRUNK;
gossipstart = TEXT_FARNHAM2; gossipstart = TEXT_FARNHAM2;
gossipend = TEXT_FARNHAM13; gossipend = TEXT_FARNHAM13;

13
Source/towners.cpp

@ -11,7 +11,6 @@ BOOL storeflag;
int sgnCowMsg; int sgnCowMsg;
int numtowners; int numtowners;
DWORD sgdwCowClicks; DWORD sgdwCowClicks;
BOOL boyloadflag;
BYTE *pCowCels; BYTE *pCowCels;
TownerStruct towner[NUM_TOWNERS]; TownerStruct towner[NUM_TOWNERS];
@ -215,14 +214,10 @@ void InitTownerInfo(int i, int w, int sel, int t, int x, int y, int ao, int tp)
void InitQstSnds(int i) void InitQstSnds(int i)
{ {
int j, tl; for (int j = 0; j < MAXQUESTS; j++) {
tl = i;
if (boyloadflag)
tl++;
for (j = 0; j < MAXQUESTS; j++) {
towner[i].qsts[j]._qsttype = quests[j]._qtype; towner[i].qsts[j]._qsttype = quests[j]._qtype;
towner[i].qsts[j]._qstmsg = Qtalklist[tl][j]; towner[i].qsts[j]._qstmsg = Qtalklist[i][j];
if (Qtalklist[tl][j] != TEXT_NONE) if (Qtalklist[i][j] != TEXT_NONE)
towner[i].qsts[j]._qstmsgact = TRUE; towner[i].qsts[j]._qstmsgact = TRUE;
else else
towner[i].qsts[j]._qstmsgact = FALSE; towner[i].qsts[j]._qstmsgact = FALSE;
@ -315,7 +310,6 @@ void InitBoy()
{ {
int i; int i;
boyloadflag = TRUE;
InitTownerInfo(numtowners, 96, TRUE, TOWN_PEGBOY, 11, 53, -1, 10); InitTownerInfo(numtowners, 96, TRUE, TOWN_PEGBOY, 11, 53, -1, 10);
InitQstSnds(numtowners); InitQstSnds(numtowners);
towner[numtowners]._tNData = LoadFileInMem("Towners\\TownBoy\\PegKid1.CEL", NULL); towner[numtowners]._tNData = LoadFileInMem("Towners\\TownBoy\\PegKid1.CEL", NULL);
@ -469,7 +463,6 @@ void InitGirl()
void InitTowners() void InitTowners()
{ {
numtowners = 0; numtowners = 0;
boyloadflag = FALSE;
InitSmith(); InitSmith();
InitHealer(); InitHealer();
if (quests[Q_BUTCHER]._qactive != QUEST_NOTAVAIL && quests[Q_BUTCHER]._qactive != QUEST_DONE) if (quests[Q_BUTCHER]._qactive != QUEST_NOTAVAIL && quests[Q_BUTCHER]._qactive != QUEST_DONE)

Loading…
Cancel
Save