diff --git a/Source/init.h b/Source/init.h index 76809088b..aa5cd470f 100644 --- a/Source/init.h +++ b/Source/init.h @@ -13,6 +13,23 @@ extern char diabdat_mpq_path[MAX_PATH]; extern HANDLE patch_rt_mpq; extern BOOL killed_mom_parent; extern BOOLEAN screensaver_enabled_prev; +#ifdef HELLFIRE +extern char hellfire_mpq_path[MAX_PATH]; +extern char hfmonk_mpq_path[MAX_PATH]; +extern char hfbard_mpq_path[MAX_PATH]; +extern char hfbarb_mpq_path[MAX_PATH]; +extern char hfmusic_mpq_path[MAX_PATH]; +extern char hfvoice_mpq_path[MAX_PATH]; +extern char hfopt1_mpq_path[MAX_PATH]; +extern char hfopt2_mpq_path[MAX_PATH]; +extern HANDLE hfmonk_mpq; +extern HANDLE hfbard_mpq; +extern HANDLE hfbarb_mpq; +extern HANDLE hfmusic_mpq; +extern HANDLE hfvoice_mpq; +extern HANDLE hfopt1_mpq; +extern HANDLE hfopt2_mpq; +#endif void init_cleanup(BOOL show_cursor); void init_run_office_from_start_menu(); diff --git a/Source/player.cpp b/Source/player.cpp index e75d09287..769b86c49 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -23,7 +23,26 @@ int plr_dframe_size; const char ArmourChar[4] = { 'L', 'M', 'H', 0 }; const char WepChar[10] = { 'N', 'U', 'S', 'D', 'B', 'A', 'M', 'H', 'T', 0 }; -const char CharChar[4] = { 'W', 'R', 'S', 0 }; +const char CharChar[] = { + 'W', + 'R', + 'S', +#ifdef HELLFIRE + 'M', + 'R', + 'W', + 0 +}; +const char CharCharHF[] = { + 'W', + 'R', + 'S', + 'M', + 'B', + 'C', +#endif + 0 +}; /* data */ @@ -50,7 +69,16 @@ int MagicTbl[3] = { 10, 15, 35 }; int DexterityTbl[3] = { 20, 30, 15 }; int VitalityTbl[3] = { 25, 20, 20 }; int ToBlkTbl[3] = { 30, 20, 10 }; -char *ClassStrTblOld[3] = { "Warrior", "Rogue", "Sorceror" }; // unused +char *ClassStrTblOld[] = { + "Warrior", + "Rogue", + "Sorceror", +#ifdef HELLFIRE + "Monk", + "Bard", + "Barbarian", +#endif +}; int MaxStats[3][4] = { { 250, 50, 60, 100 }, { 55, 70, 250, 80 }, @@ -109,7 +137,16 @@ int ExpLvlsTbl[MAXCHARLEVEL] = { 1310707109, 1583495809 }; -char *ClassStrTbl[3] = { "Warrior", "Rogue", "Sorceror" }; +char *ClassStrTbl[] = { + "Warrior", + "Rogue", + "Sorceror", +#ifdef HELLFIRE + "Monk", + "Rogue", + "Warrior", +#endif +}; BYTE fix[9] = { 0, 0, 3, 3, 3, 6, 6, 6, 8 }; /* PM_ChangeLightOff local type */ void SetPlayerGPtrs(BYTE *pData, BYTE **pAnim) @@ -136,8 +173,18 @@ void LoadPlrGFX(int pnum, player_graphic gfxflag) } p = &plr[pnum]; - sprintf(prefix, "%c%c%c", CharChar[p->_pClass], ArmourChar[p->_pgfxnum >> 4], WepChar[p->_pgfxnum & 0xF]); - cs = ClassStrTbl[p->_pClass]; +#ifdef HELLFIRE + if ((p->_pClass != PC_BARD || hfbard_mpq == NULL) && (p->_pClass != PC_BARBARIAN || hfbarb_mpq == NULL)) { +#endif + sprintf(prefix, "%c%c%c", CharChar[p->_pClass], ArmourChar[p->_pgfxnum >> 4], WepChar[p->_pgfxnum & 0xF]); + cs = ClassStrTbl[p->_pClass]; +#ifdef HELLFIRE + } else { + sprintf(prefix, "%c%c%c", CharCharHF[p->_pClass], ArmourChar[p->_pgfxnum >> 4], WepChar[p->_pgfxnum & 0xF]); + cs = ClassStrTbl[p->_pClass]; + cs = ClassStrTblOld[p->_pClass]; + } +#endif for (i = 1; i <= PFILE_NONDEATH; i <<= 1) { if (!(i & gfxflag)) { diff --git a/Source/player.h b/Source/player.h index 5b1b60df5..daa306012 100644 --- a/Source/player.h +++ b/Source/player.h @@ -117,7 +117,7 @@ void PlayDungMsgs(); extern const char ArmourChar[4]; extern const char WepChar[10]; -extern const char CharChar[4]; +extern const char CharChar[]; /* data */ @@ -133,10 +133,10 @@ extern int MagicTbl[3]; extern int DexterityTbl[3]; extern int VitalityTbl[3]; extern int ToBlkTbl[3]; -extern char *ClassStrTblOld[3]; +extern char *ClassStrTblOld[]; extern int MaxStats[3][4]; extern int ExpLvlsTbl[MAXCHARLEVEL]; -extern char *ClassStrTbl[3]; +extern char *ClassStrTbl[]; extern BYTE fix[9]; #endif /* __PLAYER_H__ */