From 760b89138e8dc81ada6c3ec299fabf7eae46c13e Mon Sep 17 00:00:00 2001 From: qndel Date: Mon, 20 Jan 2020 21:35:14 +0100 Subject: [PATCH] [hellfire] new functions --- Source/objects.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++++- Source/objects.h | 3 +- 2 files changed, 85 insertions(+), 2 deletions(-) diff --git a/Source/objects.cpp b/Source/objects.cpp index 86b739705..8554d12b3 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -1491,8 +1491,90 @@ void AddSlainHero() } #ifdef HELLFIRE -void objects_44D8C5(int a1, int a2, int a3, int a4) +void objects_44D8C5(int ot, int v2, int ox, int oy) { + int oi; + + if (nobjects >= MAXOBJECTS) + return; + + oi = objectavail[0]; + objectavail[0] = objectavail[126 - nobjects]; + objectactive[nobjects] = oi; + dObject[ox][oy] = oi + 1; + SetupObject(oi, ox, oy, ot); + objects_44DA68(oi, v2); + object[oi]._oAnimWidth2 = (object[oi]._oAnimWidth - 64) >> 1; + nobjects++; +} + +void objects_44DA68(int i, int a2) +{ + int v8, v9; + if (a2 > 5) { + object[i]._oVar8 = a2; + switch (a2) { + case 6: + if (plr[myplr]._pClass == PC_WARRIOR) { + object[i]._oVar2 = 323; + } else if (plr[myplr]._pClass == PC_ROGUE) { + object[i]._oVar2 = 332; + } else if (plr[myplr]._pClass == PC_SORCERER) { + object[i]._oVar2 = 329; + } else if (plr[myplr]._pClass == PC_MONK) { + object[i]._oVar2 = 326; + } else if (plr[myplr]._pClass == PC_BARD) { + object[i]._oVar2 = 335; + } else if (plr[myplr]._pClass == PC_BARBARIAN) { + object[i]._oVar2 = 323; + } + break; + case 7: + if (plr[myplr]._pClass == PC_WARRIOR) { + object[i]._oVar2 = 324; + } else if (plr[myplr]._pClass == PC_ROGUE) { + object[i]._oVar2 = 333; + } else if (plr[myplr]._pClass == PC_SORCERER) { + object[i]._oVar2 = 330; + } else if (plr[myplr]._pClass == PC_MONK) { + object[i]._oVar2 = 327; + } else if (plr[myplr]._pClass == PC_BARD) { + object[i]._oVar2 = 336; + } else if (plr[myplr]._pClass == PC_BARBARIAN) { + object[i]._oVar2 = 324; + } + break; + case 8: + if (plr[myplr]._pClass == PC_WARRIOR) { + object[i]._oVar2 = 325; + } else if (plr[myplr]._pClass == PC_ROGUE) { + object[i]._oVar2 = 334; + } else if (plr[myplr]._pClass == PC_SORCERER) { + object[i]._oVar2 = 331; + } else if (plr[myplr]._pClass == PC_MONK) { + object[i]._oVar2 = 328; + } else if (plr[myplr]._pClass == PC_BARD) { + object[i]._oVar2 = 337; + } else if (plr[myplr]._pClass == PC_BARBARIAN) { + object[i]._oVar2 = 325; + } + break; + } + object[i]._oVar1 = 1; + object[i]._oVar3 = 15; + v8 = 2 * object[i]._oVar1; + object[i]._oAnimFrame = 5 - v8; + object[i]._oVar4 = object[i]._oAnimFrame + 1; + } else { + + object[i]._oVar1 = 1; + object[i]._oVar2 = a2 + 316; + object[i]._oVar3 = a2 + 9; + v9 = 2 * object[i]._oVar1; + object[i]._oAnimFrame = 5 - v9; + object[i]._oVar4 = object[i]._oAnimFrame + 1; + object[i]._oVar8 = 0; + } } #endif diff --git a/Source/objects.h b/Source/objects.h index 6ce08eb1d..0bcdadaf9 100644 --- a/Source/objects.h +++ b/Source/objects.h @@ -86,7 +86,8 @@ void GetRndObjLoc(int randarea, int &xx, int &yy); void AddMushPatch(); void AddSlainHero(); #ifdef HELLFIRE -void objects_44D8C5(int a1, int a2, int a3, int a4); +void objects_44D8C5(int ot, int v2, int ox, int oy); +void objects_44DA68(int a1, int a2); void objects_454AF0(int a1, int a2, int a3); #endif void AddObject(int ot, int ox, int oy);