Files
Justin Marshall 101266ab72 Initial commit.
2026-04-27 10:35:40 -07:00

155 lines
4.0 KiB
C++

/*-----------------------------------------------------------------------**
** Diablo
**
** Constants and Variables
**
** (C)1995 Condor, Inc. All rights reserved.
**-----------------------------------------------------------------------**
** $Header: /Diablo/QUESTS.H 2 1/23/97 12:21p Jmorin $
**-----------------------------------------------------------------------*/
#ifndef MAXQUESTS // only one copy in existsence JKE
/*-----------------------------------------------------------------------**
** Defines
**-----------------------------------------------------------------------*/
#define MAXQUESTS 24 // JKEQUEST add to this when adding new quests
#define MAXMULTIQUESTS 9
#define Q_ROCK 0
#define Q_BKMUSHRM 1
#define Q_GARBUD 2
#define Q_ZHAR 3
#define Q_VEIL 4
#define Q_DIABLO 5
#define Q_BUTCHER 6
#define Q_LTBANNER 7
#define Q_BLIND 8
#define Q_BLOOD 9
#define Q_ANVIL 10
#define Q_WARLORD 11
#define Q_SKELKING 12
#define Q_PWATER 13
#define Q_SCHAMB 14
#define Q_BETRAYER 15
#define Q_CRYPTMAP 16 // JKEQUEST
#define Q_FARMER 17
#define Q_THEO 18
#define Q_TRADER 19
#define Q_DEFILER 20
#define Q_NA_KRUL 21
#define Q_CORNERSTONE 22
#define Q_COWSUIT 23
#define QUEST_NOTAVAIL 0
#define QUEST_NOTACTIVE 1
#define QUEST_NOTDONE 2
#define QUEST_DONE 3
#define QUEST_TOOWEAK1 4
#define QUEST_TOOWEAK2 5
#define QUEST_TOOWEAK3 6
#define QUEST_PASS1 7
#define QUEST_PASS2 8
#define QUEST_PASS3 9
#define QUEST_REALLYDONE 10
#define QFLAG_MULTI 1
// Vile Betrayer Red Portal
#define QS_VBRPOFF 0 // Red Portal not init
#define QS_VBRP1 1 // Red Portal lvl 15 on
#define QS_VBRP2 2 // Red Portal lvl 15 off
#define QS_VBRP3 3 // Red Portal set lvl on
#define QS_VBRP4 4 // Red Portal set lvl off
// Mushroom Quest states
enum {
QS_INIT=0,
QS_TOMESPAWNED,
QS_TOMEGIVEN,
QS_MUSHSPAWNED,
QS_MUSHPICKED,
QS_MUSHGIVEN,
QS_BRAINSPAWNED,
QS_BRAINGIVEN, // == elixir spawned
};
/*-----------------------------------------------------------------------**
** Structures
**-----------------------------------------------------------------------*/
typedef struct {
byte _qlevel; // Which level the quest will appear on
byte _qtype; // Which quest it is
byte _qactive; // Not avail, not active, not completed, done flag
byte _qlvltype; // Quest level type (255 is current)
int _qtx; // X trigger to level
int _qty; // Y trigger to level
byte _qslvl; // Which set level is it?
byte _qidx; // quest data index
int _qmsg; // current quest msg
BYTE _qvar1; // quest-dependent state variable
BYTE _qvar2;
BOOL _qlog; // display in quest log
} QuestStruct;
#define SAVE_QUEST_SIZE sizeof(QuestStruct)
typedef struct {
byte _qdlvl; // level the quest will appear on
char _qdmultlvl; // Which level the quest will appear on in multiplayer
byte _qlvlt; // Level gfx type
byte _qdtype; // Which quest it is
byte _qdrnd; // Random percent of quest appearing
byte _qslvl; // Set level number
BOOL _qflags; // Quest flags
int _qdmsg; // initial quest message
char *_qlstr; // String description for log
} QuestData;
/*-----------------------------------------------------------------------**
** Externs
**-----------------------------------------------------------------------*/
extern QuestStruct quests[MAXQUESTS];
extern BOOL questlog;
extern BYTE *pQLogCel;
extern int ReturnLvlX, ReturnLvlY, ReturnLvl, ReturnLvlT;
/*-----------------------------------------------------------------------**
** Prototypes
**-----------------------------------------------------------------------*/
void InitQuests();
void DRLG_CheckQuests(int, int);
void CheckQuests();
void CheckQuestKill(int, BOOL);
void SetReturnLvlPos();
void GetReturnLvlPos();
void ResyncQuests();
void ResyncMPQuests();
void DrawQuestLog();
void StartQuestlog();
void QuestlogUp();
void QuestlogDown();
void QuestlogEnter();
void QuestlogESC();
void CheckQLogBtn();
BOOL ForceQuests();
BOOL QuestStatus(int);
void SetMultiQuest(int, int, BOOL, int);
#endif