From 9894bffc9574aa3a72dadd573edb4a37f73e9ef3 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sat, 23 Jan 2021 03:34:03 +0100 Subject: [PATCH] Unify another chunk of Hellfire code --- Source/inv.cpp | 12 --- Source/mainmenu.cpp | 7 +- Source/missiles.cpp | 183 +++++++++++++------------------------------- 3 files changed, 57 insertions(+), 145 deletions(-) diff --git a/Source/inv.cpp b/Source/inv.cpp index 73f8f0a09..19c41c826 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -1062,12 +1062,8 @@ void CheckInvPaste(int pnum, int mx, int my) cn = SwapItem(&plr[pnum].InvBody[INVLOC_HAND_LEFT], &plr[pnum].HoldItem); break; } -#ifdef HELLFIRE - NetSendCmdChItem(FALSE, INVLOC_HAND_LEFT); -#else NetSendCmdDelItem(FALSE, INVLOC_HAND_LEFT); NetSendCmdChItem(FALSE, INVLOC_HAND_RIGHT); -#endif SwapItem(&plr[pnum].InvBody[INVLOC_HAND_RIGHT], &plr[pnum].InvBody[INVLOC_HAND_LEFT]); cn = SwapItem(&plr[pnum].InvBody[INVLOC_HAND_RIGHT], &plr[pnum].HoldItem); break; @@ -2389,11 +2385,7 @@ void RemoveScroll(int pnum) for (i = 0; i < plr[pnum]._pNumInv; i++) { if (plr[pnum].InvList[i]._itype != ITYPE_NONE && (plr[pnum].InvList[i]._iMiscId == IMISC_SCROLL || plr[pnum].InvList[i]._iMiscId == IMISC_SCROLLT) -#ifndef HELLFIRE && plr[pnum].InvList[i]._iSpell == plr[pnum]._pRSpell) { -#else - && plr[pnum].InvList[i]._iSpell == plr[pnum]._pSpell) { -#endif RemoveInvItem(pnum, i); CalcPlrScrolls(pnum); return; @@ -2402,11 +2394,7 @@ void RemoveScroll(int pnum) for (i = 0; i < MAXBELTITEMS; i++) { if (plr[pnum].SpdList[i]._itype != ITYPE_NONE && (plr[pnum].SpdList[i]._iMiscId == IMISC_SCROLL || plr[pnum].SpdList[i]._iMiscId == IMISC_SCROLLT) -#ifndef HELLFIRE - && plr[pnum].SpdList[i]._iSpell == plr[pnum]._pRSpell) { -#else && plr[pnum].SpdList[i]._iSpell == plr[pnum]._pSpell) { -#endif RemoveSpdBarItem(pnum, i); CalcPlrScrolls(pnum); return; diff --git a/Source/mainmenu.cpp b/Source/mainmenu.cpp index b4cf7faa7..484ab19af 100644 --- a/Source/mainmenu.cpp +++ b/Source/mainmenu.cpp @@ -51,11 +51,13 @@ static BOOL mainmenu_init_menu(int type) static BOOL mainmenu_single_player() { -#ifdef HELLFIRE if (!SRegLoadValue("Hellfire", jogging_title, 0, &jogging_opt)) { jogging_opt = TRUE; } -#endif + if (!gbIsHellfire) { + jogging_opt = FALSE; + } + gbMaxPlayers = 1; if (!SRegLoadValue("devilutionx", "game speed", 0, &ticks_per_sec)) { @@ -67,6 +69,7 @@ static BOOL mainmenu_single_player() static BOOL mainmenu_multi_player() { + jogging_opt = FALSE; gbMaxPlayers = MAX_PLRS; return mainmenu_init_menu(SELHERO_CONNECT); } diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 778b9515a..273ec4629 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -609,8 +609,7 @@ BOOL MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, int t, BOOLE hper -= (dist * dist) >> 1; #ifdef HELLFIRE hper -= plr[pnum]._pIEnAc; -#endif -#ifndef HELLFIRE +#else hper += plr[pnum]._pIEnAc; #endif hper += 50; @@ -795,17 +794,13 @@ BOOL PlayerMHit(int pnum, int m, int dist, int mind, int maxd, int mtype, BOOLEA if (shift == FALSE) { dam = (mind << 6) + random_(75, (maxd - mind + 1) << 6); -#ifndef HELLFIRE if (m == -1) -#endif if (plr[pnum]._pIFlags & ISPL_ABSHALFTRAP) dam >>= 1; dam += (plr[pnum]._pIGetHit * 64); } else { dam = mind + random_(75, maxd - mind + 1); -#ifndef HELLFIRE if (m == -1) -#endif if (plr[pnum]._pIFlags & ISPL_ABSHALFTRAP) dam >>= 1; dam += plr[pnum]._pIGetHit; @@ -814,8 +809,7 @@ BOOL PlayerMHit(int pnum, int m, int dist, int mind, int maxd, int mtype, BOOLEA if (dam < 64) dam = 64; } -#ifdef HELLFIRE - if (blk < blkper) { + if ((resper <= 0 || gbIsHellfire) && blk < blkper) { if (m != -1) { tac = GetDirection(plr[pnum]._px, plr[pnum]._py, monster[m]._mx, monster[m]._my); } else { @@ -825,7 +819,6 @@ BOOL PlayerMHit(int pnum, int m, int dist, int mind, int maxd, int mtype, BOOLEA StartPlrBlock(pnum, tac); return TRUE; } -#endif if (resper > 0) { dam = dam - dam * resper / 100; @@ -857,34 +850,21 @@ BOOL PlayerMHit(int pnum, int m, int dist, int mind, int maxd, int mtype, BOOLEA drawhpflag = TRUE; } return TRUE; + } + if (pnum == myplr) { + plr[pnum]._pHitPoints -= dam; + plr[pnum]._pHPBase -= dam; + } + if (plr[pnum]._pHitPoints > plr[pnum]._pMaxHP) { + plr[pnum]._pHitPoints = plr[pnum]._pMaxHP; + plr[pnum]._pHPBase = plr[pnum]._pMaxHPBase; + } + if (plr[pnum]._pHitPoints >> 6 <= 0) { + SyncPlrKill(pnum, earflag); } else { -#ifndef HELLFIRE - if (blk < blkper) { - if (m != -1) { - tac = GetDirection(plr[pnum]._px, plr[pnum]._py, monster[m]._mx, monster[m]._my); - } else { - tac = plr[pnum]._pdir; - } - StartPlrBlock(pnum, tac); - } else -#endif - { - if (pnum == myplr) { - plr[pnum]._pHitPoints -= dam; - plr[pnum]._pHPBase -= dam; - } - if (plr[pnum]._pHitPoints > plr[pnum]._pMaxHP) { - plr[pnum]._pHitPoints = plr[pnum]._pMaxHP; - plr[pnum]._pHPBase = plr[pnum]._pMaxHPBase; - } - if (plr[pnum]._pHitPoints >> 6 <= 0) { - SyncPlrKill(pnum, earflag); - } else { - StartPlrHit(pnum, dam, FALSE); - } - } - return TRUE; + StartPlrHit(pnum, dam, FALSE); } + return TRUE; } return FALSE; } @@ -1068,8 +1048,7 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my, missile[i]._mitype, shift, &blocked)) { -#ifdef HELLFIRE - if (blocked) { + if (gbIsHellfire && blocked) { dir = missile[i]._mimfnum + (random_(10, 2) ? 1 : -1); mAnimFAmt = misfiledata[missile[i]._miAnimType].mAnimFAmt; if (dir < 0) @@ -1078,11 +1057,8 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my, dir = 0; SetMissDir(i, dir); - } else -#endif - { - if (!nodel) - missile[i]._mirange = 0; + } else if (!nodel) { + missile[i]._mirange = 0; } missile[i]._miHitFlag = TRUE; } @@ -1106,8 +1082,7 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my, shift, 0, &blocked)) { -#ifdef HELLFIRE - if (blocked) { + if (gbIsHellfire && blocked) { dir = missile[i]._mimfnum + (random_(10, 2) ? 1 : -1); mAnimFAmt = misfiledata[missile[i]._miAnimType].mAnimFAmt; if (dir < 0) @@ -1116,11 +1091,8 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my, dir = 0; SetMissDir(i, dir); - } else -#endif - { - if (!nodel) - missile[i]._mirange = 0; + } else if (!nodel) { + missile[i]._mirange = 0; } missile[i]._miHitFlag = TRUE; } @@ -1157,8 +1129,7 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my, #endif , &blocked)) { -#ifdef HELLFIRE - if (blocked) { + if (gbIsHellfire && blocked) { dir = missile[i]._mimfnum + (random_(10, 2) ? 1 : -1); mAnimFAmt = misfiledata[missile[i]._miAnimType].mAnimFAmt; if (dir < 0) @@ -1167,11 +1138,8 @@ void CheckMissileCol(int i, int mindam, int maxdam, BOOL shift, int mx, int my, dir = 0; SetMissDir(i, dir); - } else -#endif - { - if (!nodel) - missile[i]._mirange = 0; + } else if (!nodel) { + missile[i]._mirange = 0; } missile[i]._miHitFlag = TRUE; } @@ -2061,7 +2029,6 @@ void AddLArrow(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, dy += YDirAdd[midir]; } if (mienemy == TARGET_MONSTERS) { -#ifdef HELLFIRE int av = 32; if (plr[id]._pClass == PC_ROGUE) @@ -2069,23 +2036,21 @@ void AddLArrow(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, else if (plr[id]._pClass == PC_WARRIOR || plr[id]._pClass == PC_BARD) av += (plr[id]._pLevel) >> 3; - if (plr[id]._pIFlags & ISPL_QUICKATTACK) - av++; - if (plr[id]._pIFlags & ISPL_FASTATTACK) - av += 2; - if (plr[id]._pIFlags & ISPL_FASTERATTACK) - av += 4; - if (plr[id]._pIFlags & ISPL_FASTESTATTACK) - av += 8; + if (gbIsHellfire) { + if (plr[id]._pIFlags & ISPL_QUICKATTACK) + av++; + if (plr[id]._pIFlags & ISPL_FASTATTACK) + av += 2; + if (plr[id]._pIFlags & ISPL_FASTERATTACK) + av += 4; + if (plr[id]._pIFlags & ISPL_FASTESTATTACK) + av += 8; + } else { + if (plr[id]._pClass == PC_ROGUE || plr[id]._pClass == PC_WARRIOR || plr[id]._pClass == PC_BARD) + av -= 1; + } + GetMissileVel(mi, sx, sy, dx, dy, av); -#else - if (plr[id]._pClass == PC_ROGUE) - GetMissileVel(mi, sx, sy, dx, dy, (plr[id]._pLevel >> 2) + 31); - else if (plr[id]._pClass == PC_WARRIOR) - GetMissileVel(mi, sx, sy, dx, dy, (plr[id]._pLevel >> 3) + 31); - else - GetMissileVel(mi, sx, sy, dx, dy, 32); -#endif } else GetMissileVel(mi, sx, sy, dx, dy, 32); @@ -2109,26 +2074,20 @@ void AddArrow(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, i if (plr[id]._pIFlags & ISPL_RNDARROWVEL) { av = random_(64, 32) + 16; } -#ifdef HELLFIRE if (plr[id]._pClass == PC_ROGUE) av += (plr[id]._pLevel - 1) >> 2; else if (plr[id]._pClass == PC_WARRIOR || plr[id]._pClass == PC_BARD) av += (plr[id]._pLevel - 1) >> 3; - - if (plr[id]._pIFlags & ISPL_QUICKATTACK) - av++; - if (plr[id]._pIFlags & ISPL_FASTATTACK) - av += 2; - if (plr[id]._pIFlags & ISPL_FASTERATTACK) - av += 4; - if (plr[id]._pIFlags & ISPL_FASTESTATTACK) - av += 8; -#else - if (plr[id]._pClass == PC_ROGUE) - av += (plr[id]._pLevel - 1) >> 2; - if (plr[id]._pClass == PC_WARRIOR) - av += (plr[id]._pLevel - 1) >> 3; -#endif + if (gbIsHellfire) { + if (plr[id]._pIFlags & ISPL_QUICKATTACK) + av++; + if (plr[id]._pIFlags & ISPL_FASTATTACK) + av += 2; + if (plr[id]._pIFlags & ISPL_FASTERATTACK) + av += 4; + if (plr[id]._pIFlags & ISPL_FASTESTATTACK) + av += 8; + } GetMissileVel(mi, sx, sy, dx, dy, av); } else { GetMissileVel(mi, sx, sy, dx, dy, 32); @@ -2243,14 +2202,10 @@ void AddMagmaball(int mi, int sx, int sy, int dx, int dy, int midir, char mienem missile[mi]._mitxoff += 3 * missile[mi]._mixvel; missile[mi]._mityoff += 3 * missile[mi]._miyvel; GetMissilePos(mi); -#ifdef HELLFIRE - if (missile[mi]._mixvel & 0xFFFF0000 || missile[mi]._miyvel & 0xFFFF0000) + if (!gbIsHellfire || missile[mi]._mixvel & 0xFFFF0000 || missile[mi]._miyvel & 0xFFFF0000) missile[mi]._mirange = 256; else missile[mi]._mirange = 1; -#else - missile[mi]._mirange = 256; -#endif missile[mi]._miVar1 = sx; missile[mi]._miVar2 = sy; missile[mi]._mlid = AddLight(sx, sy, 8); @@ -2326,9 +2281,7 @@ void AddFirewall(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy GetMissileVel(mi, sx, sy, dx, dy, 16); i = missile[mi]._mispllvl; missile[mi]._mirange = 10; -#ifndef HELLFIRE if (i > 0) -#endif missile[mi]._mirange *= i + 1; #ifdef HELLFIRE if (mienemy != TARGET_MONSTERS || id < 0) @@ -2788,14 +2741,10 @@ void AddAcid(int mi, int sx, int sy, int dx, int dy, int midir, char mienemy, in { GetMissileVel(mi, sx, sy, dx, dy, 16); SetMissDir(mi, GetDirection16(sx, sy, dx, dy)); -#ifdef HELLFIRE - if (missile[mi]._mixvel & 0xFFFF0000 || missile[mi]._miyvel & 0xFFFF0000) + if (!gbIsHellfire && missile[mi]._mixvel & 0xFFFF0000 || missile[mi]._miyvel & 0xFFFF0000) missile[mi]._mirange = 5 * (monster[id]._mint + 4); else missile[mi]._mirange = 1; -#else - missile[mi]._mirange = 5 * (monster[id]._mint + 4); -#endif missile[mi]._mlid = -1; missile[mi]._miVar1 = sx; missile[mi]._miVar2 = sy; @@ -4660,18 +4609,9 @@ void MI_Manashield(int i) missile[i]._mirange = 0; if (plr[id]._pHitPoints < missile[i]._miVar1) { diff = missile[i]._miVar1 - plr[id]._pHitPoints; -#ifdef HELLFIRE - int div = 0; - for (int m = 0; m < missile[i]._mispllvl && m < 7; m++) { - div += 3; - } - if (div > 0) - diff -= diff / div; -#else if (missile[i]._mispllvl > 0) { diff += diff / -3; } -#endif if (diff < 0) diff = 0; @@ -4684,13 +4624,8 @@ void MI_Manashield(int i) plr[id]._pMana -= diff; plr[id]._pManaBase -= diff; } else { -#ifdef HELLFIRE - plr[id]._pHitPoints += plr[id]._pMana - diff; - plr[id]._pHPBase += plr[id]._pMana - diff; -#else plr[id]._pHitPoints = plr[id]._pMana + missile[i]._miVar1 - diff; plr[id]._pHPBase = plr[id]._pMana + missile[i]._miVar2 - diff; -#endif plr[id]._pMana = 0; plr[id]._pManaBase = plr[id]._pMaxManaBase - plr[id]._pMaxMana; missile[i]._mirange = 0; @@ -4703,13 +4638,12 @@ void MI_Manashield(int i) } } -#ifndef HELLFIRE if (id == myplr && plr[id]._pHitPoints == 0 && missile[i]._miVar1 == 0 && plr[id]._pmode != PM_DEATH) { missile[i]._mirange = 0; missile[i]._miDelFlag = TRUE; SyncPlrKill(id, -1); } -#endif + missile[i]._miVar1 = plr[id]._pHitPoints; missile[i]._miVar2 = plr[id]._pHPBase; if (missile[i]._mirange == 0) { @@ -4944,11 +4878,7 @@ void MI_Weapexp(int i) void MI_Misexp(int i) { -#ifdef HELLFIRE int ExpLight[] = { 9, 10, 11, 12, 11, 10, 8, 6, 4, 2, 1, 0, 0, 0, 0 }; -#else - int ExpLight[] = { 9, 10, 11, 12, 11, 10, 8, 6, 4, 2 }; -#endif missile[i]._mirange--; if (missile[i]._mirange == 0) { @@ -5022,10 +4952,8 @@ void MI_Stone(int i) missile[i]._mirange--; m = missile[i]._miVar2; if (monster[m]._mhitpoints == 0 && missile[i]._miAnimType != MFILE_SHATTER1) { -#ifndef HELLFIRE missile[i]._mimfnum = 0; missile[i]._miDrawFlag = TRUE; -#endif SetMissAnim(i, MFILE_SHATTER1); missile[i]._mirange = 11; } @@ -5204,15 +5132,10 @@ void MI_Apoca(int i) for (j = missile[i]._miVar2; j < missile[i]._miVar3 && !exit; j++) { for (k = missile[i]._miVar4; k < missile[i]._miVar5 && !exit; k++) { if (dMonster[k][j] > MAX_PLRS - 1 && !nSolidTable[dPiece[k][j]]) { -#ifdef HELLFIRE - if (LineClear(missile[i]._mix, missile[i]._miy, k, j)) { + if (!gbIsHellfire || LineClear(missile[i]._mix, missile[i]._miy, k, j)) { AddMissile(k, j, k, j, plr[id]._pdir, MIS_BOOM, TARGET_MONSTERS, id, missile[i]._midam, 0); exit = TRUE; } -#else - AddMissile(k, j, k, j, plr[id]._pdir, MIS_BOOM, TARGET_MONSTERS, id, missile[i]._midam, 0); - exit = TRUE; -#endif } } if (!exit) { @@ -5661,10 +5584,8 @@ void ProcessMissiles() for (i = 0; i < nummissiles; i++) { dFlags[missile[missileactive[i]]._mix][missile[missileactive[i]]._miy] &= ~BFLAG_MISSILE; dMissile[missile[missileactive[i]]._mix][missile[missileactive[i]]._miy] = 0; -#ifdef HELLFIRE if (missile[missileactive[i]]._mix < 0 || missile[missileactive[i]]._mix >= MAXDUNX - 1 || missile[missileactive[i]]._miy < 0 || missile[missileactive[i]]._miy >= MAXDUNY - 1) missile[missileactive[i]]._miDelFlag = TRUE; -#endif } i = 0;