- actFloorBounceVector

This commit is contained in:
Christoph Oelckers 2021-11-24 00:12:37 +01:00
parent 38c0bc915d
commit 6ee9ae7ec6
5 changed files with 7 additions and 8 deletions

View file

@ -2613,10 +2613,9 @@ int actWallBounceVector(int* x, int* y, walltype* pWall, int a4)
//
//---------------------------------------------------------------------------
int actFloorBounceVector(int* x, int* y, int* z, int nSector, int a5)
int actFloorBounceVector(int* x, int* y, int* z, sectortype* pSector, int a5)
{
int t = 0x10000 - a5;
auto pSector = &sector[nSector];
if (pSector->floorheinum == 0)
{
int t2 = MulScale(*z, t, 16);
@ -4695,7 +4694,7 @@ static Collision MoveThing(DBloodActor* actor)
{
pSprite->flags |= 4;
int vax = actFloorBounceVector(&actor->xvel, &actor->yvel, (int*)&v20, pSprite->sectnum, pThingInfo->elastic);
int vax = actFloorBounceVector(&actor->xvel, &actor->yvel, (int*)&v20, pSprite->sector(), pThingInfo->elastic);
int nDamage = MulScale(vax, vax, 30) - pThingInfo->dmgResist;
if (nDamage > 0) actDamageSprite(actor, actor, kDamageFall, nDamage);
@ -5187,7 +5186,7 @@ void MoveDude(DBloodActor* actor)
int v30 = actor->zvel - pSprite->sector()->velFloor;
if (v30 > 0)
{
int vax = actFloorBounceVector((int*)&actor->xvel, (int*)&actor->yvel, (int*)&v30, pSprite->sectnum, 0);
int vax = actFloorBounceVector((int*)&actor->xvel, (int*)&actor->yvel, (int*)&v30, pSprite->sector(), 0);
int nDamage = MulScale(vax, vax, 30);
if (pPlayer)
{

View file

@ -214,7 +214,7 @@ bool IsUnderwaterSector(sectortype* pSector);
void actInit();
int actWallBounceVector(int *x, int *y, walltype* pWall, int a4);
int actFloorBounceVector(int *x, int *y, int *z, int nSector, int a5);
void actRadiusDamage(DBloodActor* source, int x, int y, int z, int nSector, int nDist, int a7, int a8, DAMAGE_TYPE a9, int a10, int a11);
void actRadiusDamage(DBloodActor* source, int x, int y, int z, sectortype* pSector, int nDist, int a7, int a8, DAMAGE_TYPE a9, int a10, int a11);
DBloodActor *actDropObject(DBloodActor *pSprite, int nType);
bool actHealDude(DBloodActor* pXDude, int a2, int a3);
void actKillDude(DBloodActor* a1, DBloodActor* pSprite, DAMAGE_TYPE a3, int a4);

View file

@ -449,7 +449,7 @@ void fxBouncingSleeve(DBloodActor* actor, int) // 16
if (actor->zvel == 0) sleeveStopBouncing(actor);
else if (zv > 0) {
actFloorBounceVector((int*)& actor->xvel, (int*)& actor->yvel, &zv, pSprite->sectnum, 0x9000);
actFloorBounceVector((int*)& actor->xvel, (int*)& actor->yvel, &zv, pSprite->sector(), 0x9000);
actor->zvel = zv;
if (pSprite->sector()->velFloor == 0 && abs(actor->zvel) < 0x20000) {
sleeveStopBouncing(actor);

View file

@ -1819,7 +1819,7 @@ void debrisMove(int listIndex)
if (v30 > 0)
{
pXSprite->physAttr |= kPhysFalling;
actFloorBounceVector(&actor->xvel, &actor->yvel, &v30, pSprite->sectnum, tmpFraction);
actFloorBounceVector(&actor->xvel, &actor->yvel, &v30, pSprite->sector(), tmpFraction);
actor->zvel = v30;
if (abs(actor->zvel) < 0x10000)

View file

@ -509,7 +509,7 @@ static void fakeMoveDude(spritetype *pSprite)
int var44 = predict.zvel-predict.sector()->velFloor;
if (var44 > 0)
{
actFloorBounceVector(&predict.xvel, &predict.yvel, &var44, predict.sectnum, 0);
actFloorBounceVector(&predict.xvel, &predict.yvel, &var44, predict.sector, 0);
predict.zvel = var44;
if (abs(predict.zvel) < 0x10000)
{