mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 17:01:51 +00:00
- QueueWallBlood callers.
This commit is contained in:
parent
2fdc2ec00f
commit
04657ab559
3 changed files with 22 additions and 21 deletions
|
@ -417,7 +417,7 @@ int DoBloodSpray(DSWActor* actor)
|
|||
{
|
||||
wall_ang = NORM_ANGLE(hsp->ang);
|
||||
SpawnMidSplash(actor);
|
||||
QueueWallBlood(actor->GetSpriteIndex(), hsp->ang);
|
||||
QueueWallBlood(actor, hsp->ang);
|
||||
WallBounce(actor->GetSpriteIndex(), wall_ang);
|
||||
ScaleSpriteVector(actor, 32000);
|
||||
}
|
||||
|
@ -425,7 +425,7 @@ int DoBloodSpray(DSWActor* actor)
|
|||
{
|
||||
u->xchange = u->ychange = 0;
|
||||
SpawnMidSplash(actor);
|
||||
QueueWallBlood(actor->GetSpriteIndex(), hsp->ang);
|
||||
QueueWallBlood(actor, hsp->ang);
|
||||
KillActor(actor);
|
||||
return true;
|
||||
}
|
||||
|
@ -455,16 +455,17 @@ int DoBloodSpray(DSWActor* actor)
|
|||
wall_ang = NORM_ANGLE(getangle(wall[nw].x - wph->x, wall[nw].y - wph->y) + 512);
|
||||
|
||||
SpawnMidSplash(actor);
|
||||
wb = QueueWallBlood(actor->GetSpriteIndex(), NORM_ANGLE(wall_ang+1024));
|
||||
auto bldActor = QueueWallBlood(actor, NORM_ANGLE(wall_ang+1024));
|
||||
|
||||
if (wb < 0)
|
||||
if (bldActor== nullptr)
|
||||
{
|
||||
KillActor(actor);
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FAF_Sector(sprite[wb].sectnum) || FAF_ConnectArea(sprite[wb].sectnum))
|
||||
auto bsp = &bldActor->s();
|
||||
if (FAF_Sector(bsp->sectnum) || FAF_ConnectArea(bsp->sectnum))
|
||||
{
|
||||
KillActor(actor);
|
||||
return 0;
|
||||
|
@ -472,14 +473,14 @@ int DoBloodSpray(DSWActor* actor)
|
|||
|
||||
sp->xvel = sp->yvel = u->xchange = u->ychange = 0;
|
||||
sp->xrepeat = sp->yrepeat = 70 - RandomRange(25);
|
||||
sp->x = sprite[wb].x;
|
||||
sp->y = sprite[wb].y;
|
||||
sp->x = bsp->x;
|
||||
sp->y = bsp->y;
|
||||
|
||||
// !FRANK! bit of a hack
|
||||
// yvel is the hit_wall
|
||||
if (sprite[wb].yvel >= 0)
|
||||
if (bsp->yvel >= 0)
|
||||
{
|
||||
short wallnum = sprite[wb].yvel;
|
||||
short wallnum = bsp->yvel;
|
||||
|
||||
// sy & sz are the ceiling and floor of the sector you are sliding down
|
||||
if (wall[wallnum].nextsector >= 0)
|
||||
|
|
|
@ -17292,7 +17292,7 @@ BulletHitSprite(SPRITEp sp, short hit_sprite, int hit_x, int hit_y, int hit_z, s
|
|||
if (!hu->PlayerP)
|
||||
SpawnBlood(hitActor, nullptr, NORM_ANGLE(sp->ang+1024),hit_x, hit_y, hit_z);
|
||||
if (hu->ID != TRASHCAN && hu->ID != ZILLA_RUN_R0)
|
||||
QueueWallBlood(hit_sprite, sp->ang); //QueueWallBlood needs bullet angle.
|
||||
QueueWallBlood(hitActor, sp->ang); //QueueWallBlood needs bullet angle.
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20422,9 +20422,9 @@ STATE s_WallBlood4[] =
|
|||
};
|
||||
|
||||
|
||||
int QueueWallBlood(short hit_sprite, short ang)
|
||||
DSWActor* QueueWallBlood(DSWActor* actor, short ang)
|
||||
{
|
||||
SPRITEp hsp = &sprite[hit_sprite];
|
||||
SPRITEp hsp = &actor->s();
|
||||
short w,nw,wall_ang,dang;
|
||||
short SpriteNum;
|
||||
int nx,ny;
|
||||
|
@ -20433,11 +20433,11 @@ int QueueWallBlood(short hit_sprite, short ang)
|
|||
short rndnum;
|
||||
int daz;
|
||||
hitdata_t hitinfo;
|
||||
USERp u = User[hit_sprite].Data();
|
||||
USERp u = actor->u();
|
||||
|
||||
|
||||
if (TEST(u->Flags, SPR_UNDERWATER) || SpriteInUnderwaterArea(hsp) || SpriteInDiveArea(hsp))
|
||||
return -1; // No blood underwater!
|
||||
return nullptr; // No blood underwater!
|
||||
|
||||
daz = Z(RANDOM_P2(128))<<3;
|
||||
daz -= DIV2(Z(128)<<3);
|
||||
|
@ -20450,23 +20450,23 @@ int QueueWallBlood(short hit_sprite, short ang)
|
|||
&hitinfo, CLIPMASK_MISSILE);
|
||||
|
||||
if (hitinfo.sect < 0)
|
||||
return -1;
|
||||
return nullptr;
|
||||
|
||||
#define WALLBLOOD_DIST_MAX 2500
|
||||
if (Distance(hitinfo.pos.x, hitinfo.pos.y, hsp->x, hsp->y) > WALLBLOOD_DIST_MAX)
|
||||
return -1;
|
||||
return nullptr;
|
||||
|
||||
// hit a sprite?
|
||||
if (hitinfo.sprite >= 0)
|
||||
return -1; // Don't try to put blood on a sprite
|
||||
return nullptr; // Don't try to put blood on a sprite
|
||||
|
||||
if (hitinfo.wall >= 0) // Don't check if blood didn't hit a wall, otherwise the ASSERT fails!
|
||||
{
|
||||
if (TestDontStick(-1, hitinfo.wall))
|
||||
return -1;
|
||||
return nullptr;
|
||||
}
|
||||
else
|
||||
return -1;
|
||||
return nullptr;
|
||||
|
||||
|
||||
if (WallBloodQueue[WallBloodQueueHead] != -1)
|
||||
|
@ -20534,7 +20534,7 @@ int QueueWallBlood(short hit_sprite, short ang)
|
|||
if (sp->sectnum != sectnum)
|
||||
changespritesect(SpriteNum, sectnum);
|
||||
|
||||
return SpriteNum;
|
||||
return &swActors[SpriteNum];
|
||||
}
|
||||
|
||||
#define FEET_IN_BLOOD_DIST 300
|
||||
|
|
|
@ -78,7 +78,7 @@ SECTOR_OBJECTp DetectSectorObject(SECTORp);
|
|||
SECTOR_OBJECTp DetectSectorObjectByWall(WALLp);
|
||||
void ScaleSpriteVector(DSWActor* actor, int scale);
|
||||
int QueueHole(short hit_sect, short hit_wall, int hit_x, int hit_y, int hit_z);
|
||||
int QueueWallBlood(short hit_sprite, short ang);
|
||||
DSWActor* QueueWallBlood(DSWActor* hit, short ang);
|
||||
bool SlopeBounce(short SpriteNum, bool *hit_wall);
|
||||
bool HitscanSpriteAdjust(short SpriteNum, short hit_wall);
|
||||
int SpawnSwordSparks(PLAYERp pp, short hit_sect, short hit_wall, int hit_x, int hit_y, int hit_z, short hit_ang);
|
||||
|
|
Loading…
Reference in a new issue