- InitBloodSpray

This commit is contained in:
Christoph Oelckers 2021-11-01 11:57:51 +01:00
parent 5efb63b780
commit 3e91ac6417
9 changed files with 49 additions and 60 deletions

View file

@ -985,7 +985,7 @@ int DoBunnyQuickJump(DSWActor* actor)
tu->Health = 0;
// Blood fountains
InitBloodSpray(hitActor->GetSpriteIndex(), true,-1);
InitBloodSpray(hitActor, true,-1);
if (SpawnShrap(hitActor, actor))
{
@ -1197,7 +1197,7 @@ void BunnyHatch(DSWActor* actor)
Bunny_Count--; // Bunny died
// Blood fountains
InitBloodSpray(actor->GetSpriteIndex(), true, -1);
InitBloodSpray(actor, true, -1);
if (SpawnShrap(actor, actorNew))
{
@ -1371,7 +1371,7 @@ int DoBunnyMove(DSWActor* actor)
int BunnySpew(DSWActor* actor)
{
InitBloodSpray(actor->GetSpriteIndex(), true, -1);
InitBloodSpray(actor, true, -1);
return 0;
}

View file

@ -629,8 +629,8 @@ int DoCoolgMatchPlayerZ(DSWActor* actor)
// If blocking bits get unset, just die
if (!TEST(sp->cstat,CSTAT_SPRITE_BLOCK) || !TEST(sp->cstat,CSTAT_SPRITE_BLOCK_HITSCAN))
{
InitBloodSpray(actor->GetSpriteIndex(), true, 105);
InitBloodSpray(actor->GetSpriteIndex(), true, 105);
InitBloodSpray(actor, true, 105);
InitBloodSpray(actor, true, 105);
UpdateSinglePlayKills(actor);
SetSuicide(actor);
}

View file

@ -1919,15 +1919,13 @@ int InitPhosphorus(DSWActor* actor)
return 0;
}
int
InitBloodSpray(int16_t SpriteNum, bool dogib, short velocity)
int InitBloodSpray(DSWActor* actor, bool dogib, short velocity)
{
SPRITEp sp = &sprite[SpriteNum];
USERp u = User[SpriteNum].Data();
SPRITEp sp = &actor->s();
USERp u = actor->u();
USERp wu;
SPRITEp wp;
int nx, ny, nz;
short w;
short i, cnt, ang, vel, rnd;
@ -1967,15 +1965,12 @@ InitBloodSpray(int16_t SpriteNum, bool dogib, short velocity)
ny = sp->y;
nz = SPRITEp_TOS(sp)-20;
//RESET(sp->cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
// Spawn a shot
// Inserting and setting up variables
w = SpawnSprite(STAT_MISSILE, GOREDrip, s_BloodSprayChunk, sp->sectnum,
auto actorNew = SpawnActor(STAT_MISSILE, GOREDrip, s_BloodSprayChunk, sp->sectnum,
nx, ny, nz, ang, vel*2);
wp = &sprite[w];
wu = User[w].Data();
wp = &actorNew->s();
wu = actorNew->u();
SET(wu->Flags, SPR_XFLIP_TOGGLE);
if (dogib)
@ -1984,7 +1979,7 @@ InitBloodSpray(int16_t SpriteNum, bool dogib, short velocity)
SET(wp->cstat, CSTAT_SPRITE_YCENTER | CSTAT_SPRITE_INVISIBLE);
wp->shade = -12;
SetOwner(SpriteNum, w);
SetOwner(actor, actorNew);
wp->yrepeat = 64-RandomRange(35);
wp->xrepeat = 64-RandomRange(35);
wp->shade = -15;
@ -2002,7 +1997,7 @@ InitBloodSpray(int16_t SpriteNum, bool dogib, short velocity)
wu->zchange = wp->zvel >> 1;
if (!GlobalSkipZrange)
DoActorZrange(w);
DoActorZrange(actorNew->GetSpriteIndex());
}
return 0;

View file

@ -1964,7 +1964,7 @@ DoNinjaHariKari(DSWActor* actor)
cnt = RandomRange(4)+1;
for (i=0; i<=cnt; i++)
InitBloodSpray(SpriteNum,true,-2);
InitBloodSpray(actor,true,-2);
return 0;
}

View file

@ -134,8 +134,6 @@ PLAYER Player[MAX_SW_PLAYERS_REG + 1];
short NormalVisibility;
int InitBloodSpray(int16_t SpriteNum, bool dogib, short velocity);
SPRITEp FindNearSprite(SPRITEp sp, short stat);
bool PlayerOnLadder(PLAYERp pp);
void DoPlayerSlide(PLAYERp pp);
@ -5992,7 +5990,7 @@ DoPlayerBeginDie(PLAYERp pp)
pp->SpriteP->xrepeat = 48;
pp->SpriteP->yrepeat = 48;
// Blood fountains
InitBloodSpray(pp->PlayerSprite,true,105);
InitBloodSpray(pp->Actor(),true,105);
break;
case PLAYER_DEATH_EXPLODE:
@ -6007,9 +6005,9 @@ DoPlayerBeginDie(PLAYERp pp)
pp->SpriteP->xrepeat = 48;
pp->SpriteP->yrepeat = 48;
// Blood fountains
InitBloodSpray(pp->PlayerSprite,true,-1);
InitBloodSpray(pp->PlayerSprite,true,-1);
InitBloodSpray(pp->PlayerSprite,true,-1);
InitBloodSpray(pp->Actor(),true,-1);
InitBloodSpray(pp->Actor(),true,-1);
InitBloodSpray(pp->Actor(),true,-1);
break;
case PLAYER_DEATH_SQUISH:
@ -6025,7 +6023,7 @@ DoPlayerBeginDie(PLAYERp pp)
pp->SpriteP->xrepeat = 48;
pp->SpriteP->yrepeat = 48;
// Blood fountains
InitBloodSpray(pp->PlayerSprite,true,105);
InitBloodSpray(pp->Actor(),true,105);
break;
}
@ -6161,9 +6159,9 @@ void DoPlayerDeathCheckKeys(PLAYERp pp)
else
{
// If he's not on the floor, then gib like a mo-fo!
InitBloodSpray(pp->PlayerSprite,true,-1);
InitBloodSpray(pp->PlayerSprite,true,-1);
InitBloodSpray(pp->PlayerSprite,true,-1);
InitBloodSpray(pp->Actor(),true,-1);
InitBloodSpray(pp->Actor(),true,-1);
InitBloodSpray(pp->Actor(),true,-1);
}
PlayerSpawnPosition(pp);

View file

@ -43,7 +43,6 @@ BEGIN_SW_NS
short DoVatorMatch(PLAYERp pp, short match);
bool TestVatorMatchActive(short match);
void InterpSectorSprites(short sectnum, bool state);
int InitBloodSpray(short, bool, short);
void ReverseVator(short SpriteNum)
{
@ -532,9 +531,9 @@ int DoVator(DSWActor* actor)
{
if (labs(sectp->ceilingz - sectp->floorz) < SPRITEp_SIZE_Z(bsp))
{
InitBloodSpray(i, true, -1);
InitBloodSpray(itActor, true, -1);
UpdateSinglePlayKills(itActor);
KillSprite(i);
KillActor(itActor);
continue;
}
}
@ -584,9 +583,9 @@ int DoVator(DSWActor* actor)
{
if (labs(sectp->ceilingz - sectp->floorz) < SPRITEp_SIZE_Z(bsp))
{
InitBloodSpray(i, true, -1);
InitBloodSpray(itActor, true, -1);
UpdateSinglePlayKills(itActor);
KillSprite(i);
KillActor(itActor);
continue;
}
}

View file

@ -5073,8 +5073,8 @@ ActorChooseDeath(short SpriteNum, short Weapon)
// These are player zombies
case ZOMBIE_RUN_R0:
InitBloodSpray(SpriteNum,true,105);
InitBloodSpray(SpriteNum,true,105);
InitBloodSpray(actor,true,105);
InitBloodSpray(actor,true,105);
if (SpawnShrap(actor, weapActor))
SetSuicide(actor);
break;
@ -5142,7 +5142,7 @@ ActorChooseDeath(short SpriteNum, short Weapon)
// Gib out the ones you can't cut in half
// Blood fountains
InitBloodSpray(SpriteNum,true,-1);
InitBloodSpray(actor,true,-1);
if (SpawnShrap(actor, weapActor))
{
@ -5219,7 +5219,7 @@ ActorChooseDeath(short SpriteNum, short Weapon)
ActorCoughItem(SpriteNum);
// Blood fountains
InitBloodSpray(SpriteNum,true,-1);
InitBloodSpray(actor,true,-1);
// Bosses do not gib
if (u->ID == SERP_RUN_R0 || u->ID == SUMO_RUN_R0 || u->ID == ZILLA_RUN_R0)
@ -5340,7 +5340,7 @@ ActorHealth(short SpriteNum, short amt)
u->Health = 60;
PlaySound(DIGI_NINJACHOKE, sp, v3df_follow);
InitPlasmaFountain(nullptr, sp);
InitBloodSpray(SpriteNum,false,105);
InitBloodSpray(actor,false,105);
sp->ang = NORM_ANGLE(getangle(u->targetActor->s().x - sp->x, u->targetActor->s().y - sp->y) + 1024);
RESET(sp->cstat, CSTAT_SPRITE_YFLIP);
if (sw_ninjahack)
@ -6465,7 +6465,7 @@ DoDamage(short SpriteNum, short Weapon)
break;
default:
if (RandomRange(1000) > 900)
InitBloodSpray(SpriteNum,false,105);
InitBloodSpray(actor,false,105);
if (RandomRange(1000) > 900)
SpawnMidSplash(actor);
break;
@ -6707,9 +6707,6 @@ DoDamage(short SpriteNum, short Weapon)
}
SpawnBunnyExp(Weapon);
//InitBloodSpray(Weapon,true,-1);
//InitBloodSpray(Weapon,true,-1);
//InitBloodSpray(Weapon,true,-1);
SetSuicide(weapActor);
break;
@ -8611,7 +8608,7 @@ DoPlasmaFountain(DSWActor* actor)
{
SpawnBlood(attachActor, actor, 0, 0, 0, 0);
if (RandomRange(1000) > 600)
InitBloodSpray(attachActor->GetSpriteIndex(), false, 105);
InitBloodSpray(attachActor, false, 105);
}
}
@ -11045,9 +11042,9 @@ SpawnBunnyExp(int16_t Weapon)
PlaySound(DIGI_BUNNYDIE3, sp, v3df_none);
u->ID = BOLT_EXP; // Change id
InitBloodSpray(Weapon,true,-1);
InitBloodSpray(Weapon,true,-1);
InitBloodSpray(Weapon,true,-1);
InitBloodSpray(actor, true, -1);
InitBloodSpray(actor, true, -1);
InitBloodSpray(actor, true, -1);
DoExpDamageTest(actor);
return 0;
@ -12188,9 +12185,9 @@ DoBloodWorm(DSWActor* actor)
USERp tu;
int i;
InitBloodSpray(Weapon, false, 1);
InitBloodSpray(Weapon, false, 1);
InitBloodSpray(Weapon, false, 1);
InitBloodSpray(actor, false, 1);
InitBloodSpray(actor, false, 1);
InitBloodSpray(actor, false, 1);
// Kill any old zombies you own
StatIterator it(STAT_ENEMY);
@ -12204,8 +12201,8 @@ DoBloodWorm(DSWActor* actor)
if (tu->ID == ZOMBIE_RUN_R0 && tsp->owner == sp->owner)
{
InitBloodSpray(i,true,105);
InitBloodSpray(i,true,105);
InitBloodSpray(itActor, true, 105);
InitBloodSpray(itActor, true, 105);
SetSuicide(itActor);
break;
}
@ -12234,7 +12231,7 @@ DoBloodWorm(DSWActor* actor)
if (sectnum >= 0)
{
GlobalSkipZrange = true;
InitBloodSpray(Weapon, false, 1);
InitBloodSpray(actor, false, 1);
GlobalSkipZrange = false;
}

View file

@ -179,7 +179,7 @@ void WallBounce(short SpriteNum, short ang);
int PlayerInitChemBomb(PLAYERp pp);
int InitChemBomb(DSWActor*);
int PlayerInitCaltrops(PLAYERp pp);
int InitBloodSpray(int16_t SpriteNum, bool dogib, short velocity);
int InitBloodSpray(DSWActor* actor, bool dogib, short velocity);
int SpawnBunnyExp(int16_t Weapon);
int InitBunnyRocket(PLAYERp pp);

View file

@ -888,9 +888,9 @@ DoZombieMove(DSWActor* actor)
if (u->Counter3++ >= ZOMBIE_TIME_LIMIT)
{
InitBloodSpray(SpriteNum,true,105);
InitBloodSpray(SpriteNum,true,105);
InitBloodSpray(SpriteNum,true,105);
InitBloodSpray(actor,true,105);
InitBloodSpray(actor,true,105);
InitBloodSpray(actor,true,105);
SetSuicide(actor);
return 0;
}
@ -943,9 +943,9 @@ NullZombie(DSWActor* actor)
if (u->Counter3++ >= ZOMBIE_TIME_LIMIT)
{
InitBloodSpray(SpriteNum,true,105);
InitBloodSpray(SpriteNum,true,105);
InitBloodSpray(SpriteNum,true,105);
InitBloodSpray(actor,true,105);
InitBloodSpray(actor,true,105);
InitBloodSpray(actor,true,105);
SetSuicide(actor);
return 0;
}