mirror of
https://github.com/jmarshall23/Hellfire.git
synced 2026-08-12 07:50:53 +02:00
155 lines
4.0 KiB
C++
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 |