- floatified distance in AltFireVoodoo

This commit is contained in:
Christoph Oelckers 2022-09-28 17:27:33 +02:00
parent b2bf137d72
commit 3814dfcf0e

View file

@ -1727,13 +1727,13 @@ void AltFireVoodoo(int nTrigger, PLAYER* pPlayer)
if (!targetactor) continue; if (!targetactor) continue;
if (!gGameOptions.bFriendlyFire && IsTargetTeammate(pPlayer, targetactor)) if (!gGameOptions.bFriendlyFire && IsTargetTeammate(pPlayer, targetactor))
continue; continue;
int nDist = approxDist(targetactor->spr.pos.XY() - pPlayer->actor->spr.pos.XY()); double nDist = (targetactor->spr.pos.XY() - pPlayer->actor->spr.pos.XY()).Length();
if (nDist > 0 && nDist < 51200) if (nDist > 0 && nDist < 3200)
{ {
int vc = pPlayer->ammoCount[9] >> 3; int vc = pPlayer->ammoCount[9] >> 3;
int v8 = pPlayer->ammoCount[9] << 1; int v8 = pPlayer->ammoCount[9] << 1;
int nDamage = (v8 + Random(vc)) << 4; int nDamage = (v8 + Random(vc)) << 4;
nDamage = (nDamage * ((51200 - nDist) + 1)) / 51200; nDamage = int((nDamage * ((3200 - nDist) + 1/16.)) / 3200);
nDamage = actDamageSprite(actor, targetactor, kDamageSpirit, nDamage); nDamage = actDamageSprite(actor, targetactor, kDamageSpirit, nDamage);
if (targetactor->IsPlayerActor()) if (targetactor->IsPlayerActor())
@ -1765,13 +1765,13 @@ void AltFireVoodoo(int nTrigger, PLAYER* pPlayer)
continue; continue;
if (v4 > 0) if (v4 > 0)
v4--; v4--;
int nDist = approxDist(targetactor->spr.pos.XY() - pPlayer->actor->spr.pos.XY()); double nDist = (targetactor->spr.pos.XY() - pPlayer->actor->spr.pos.XY()).Length();
if (nDist > 0 && nDist < 51200) if (nDist > 0 && nDist < 3200)
{ {
int vc = pPlayer->ammoCount[9] >> 3; int vc = pPlayer->ammoCount[9] >> 3;
int v8 = pPlayer->ammoCount[9] << 1; int v8 = pPlayer->ammoCount[9] << 1;
int nDamage = (v8 + Random2(vc)) << 4; int nDamage = (v8 + Random2(vc)) << 4;
nDamage = (nDamage * ((51200 - nDist) + 1)) / 51200; nDamage = int((nDamage * ((3200 - nDist) + 1/16.)) / 3200);
nDamage = actDamageSprite(actor, targetactor, kDamageSpirit, nDamage); nDamage = actDamageSprite(actor, targetactor, kDamageSpirit, nDamage);
UseAmmo(pPlayer, 9, nDamage); UseAmmo(pPlayer, 9, nDamage);
if (targetactor->IsPlayerActor()) if (targetactor->IsPlayerActor())