From 167ce2a3d5313f2009fedee3981aaca6b87957c3 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Wed, 30 Dec 2020 20:35:21 +0100 Subject: [PATCH] [hellfire] MI_FirewallC --- Source/missiles.cpp | 21 +++++++++++++++------ defs.h | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Source/missiles.cpp b/Source/missiles.cpp index 9c99a09bb..2ed111ac8 100644 --- a/Source/missiles.cpp +++ b/Source/missiles.cpp @@ -5172,26 +5172,35 @@ void mi_null_32(int i) void MI_FirewallC(int i) { - int tx, ty, id; + int tx, ty, id, dp, micaster; - id = missile[i]._misource; missile[i]._mirange--; + id = missile[i]._misource; if (missile[i]._mirange == 0) { missile[i]._miDelFlag = TRUE; } else { +#ifdef HELLFIRE + micaster = TARGET_BOTH; +#else + micaster = TARGET_MONSTERS; +#endif + dp = dPiece[missile[i]._miVar1][missile[i]._miVar2]; + assert(dp <= MAXTILES && dp >= 0); tx = missile[i]._miVar1 + XDirAdd[missile[i]._miVar3]; ty = missile[i]._miVar2 + YDirAdd[missile[i]._miVar3]; - if (!nMissileTable[dPiece[missile[i]._miVar1][missile[i]._miVar2]] && missile[i]._miVar8 == 0 && tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { - AddMissile(missile[i]._miVar1, missile[i]._miVar2, missile[i]._miVar1, missile[i]._miVar2, plr[id]._pdir, MIS_FIREWALL, TARGET_MONSTERS, id, 0, missile[i]._mispllvl); + if (!nMissileTable[dp] && missile[i]._miVar8 == 0 && tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { + AddMissile(missile[i]._miVar1, missile[i]._miVar2, missile[i]._miVar1, missile[i]._miVar2, plr[id]._pdir, MIS_FIREWALL, micaster, id, 0, missile[i]._mispllvl); missile[i]._miVar1 = tx; missile[i]._miVar2 = ty; } else { missile[i]._miVar8 = 1; } + dp = dPiece[missile[i]._miVar5][missile[i]._miVar6]; + assert(dp <= MAXTILES && dp >= 0); tx = missile[i]._miVar5 + XDirAdd[missile[i]._miVar4]; ty = missile[i]._miVar6 + YDirAdd[missile[i]._miVar4]; - if (!nMissileTable[dPiece[missile[i]._miVar5][missile[i]._miVar6]] && missile[i]._miVar7 == 0 && tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { - AddMissile(missile[i]._miVar5, missile[i]._miVar6, missile[i]._miVar5, missile[i]._miVar6, plr[id]._pdir, MIS_FIREWALL, TARGET_MONSTERS, id, 0, missile[i]._mispllvl); + if (!nMissileTable[dp] && missile[i]._miVar7 == 0 && tx > 0 && tx < MAXDUNX && ty > 0 && ty < MAXDUNY) { + AddMissile(missile[i]._miVar5, missile[i]._miVar6, missile[i]._miVar5, missile[i]._miVar6, plr[id]._pdir, MIS_FIREWALL, micaster, id, 0, missile[i]._mispllvl); missile[i]._miVar5 = tx; missile[i]._miVar6 = ty; } else { diff --git a/defs.h b/defs.h index 02038ed3a..cf4d2469c 100644 --- a/defs.h +++ b/defs.h @@ -235,7 +235,7 @@ #undef assert #ifndef _DEBUG -#define assert(exp) ((void)0) +#define assert(exp) ((void)(exp)) #else #define assert(exp) (void)((exp) || (assert_fail(__LINE__, __FILE__, #exp), 0)) #endif