- drips and eels.

This commit is contained in:
Christoph Oelckers 2021-11-04 18:29:37 +01:00
parent 84e99a377d
commit 845cf124e1

View file

@ -16633,8 +16633,7 @@ InitCoolgFire(DSWActor* actor)
int DoCoolgDrip(DSWActor* actor) int DoCoolgDrip(DSWActor* actor)
{ {
USER* u = actor->u(); USER* u = actor->u();
int SpriteNum = u->SpriteNum; SPRITEp sp = &actor->s();
SPRITEp sp = &sprite[SpriteNum];
u->Counter += 220; u->Counter += 220;
sp->z += u->Counter; sp->z += u->Counter;
@ -16650,8 +16649,7 @@ int DoCoolgDrip(DSWActor* actor)
return 0; return 0;
} }
int int InitCoolgDrip(DSWActor* actor)
InitCoolgDrip(DSWActor* actor)
{ {
SPRITEp sp = &actor->s(), wp; SPRITEp sp = &actor->s(), wp;
USERp wu; USERp wu;
@ -16662,14 +16660,13 @@ InitCoolgDrip(DSWActor* actor)
ny = sp->y; ny = sp->y;
nz = sp->z; nz = sp->z;
w = SpawnSprite(STAT_MISSILE, COOLG_DRIP, s_CoolgDrip, sp->sectnum, auto actorNew = SpawnActor(STAT_MISSILE, COOLG_DRIP, s_CoolgDrip, sp->sectnum,
nx, ny, nz, sp->ang, 0); nx, ny, nz, sp->ang, 0);
wp = &sprite[w]; wp = &actorNew->s();
wu = User[w].Data(); wu = actorNew->u();
SetOwner(actor, actorNew);
SetOwner(actor, &swActors[w]);
wp->yrepeat = wp->xrepeat = 20; wp->yrepeat = wp->xrepeat = 20;
wp->shade = -5; wp->shade = -5;
wp->zvel = 0; wp->zvel = 0;
@ -16680,15 +16677,13 @@ InitCoolgDrip(DSWActor* actor)
DoFindGroundPoint(actor); DoFindGroundPoint(actor);
return w; return 0;
} }
int int GenerateDrips(DSWActor* actor)
GenerateDrips(DSWActor* actor)
{ {
USER* u = actor->u(); USER* u = actor->u();
int SpriteNum = u->SpriteNum; SPRITEp sp = &actor->s(), wp;
SPRITEp sp = &sprite[SpriteNum], wp;
USERp wu; USERp wu;
int nx, ny, nz; int nx, ny, nz;
short w = 0; short w = 0;
@ -16710,14 +16705,13 @@ GenerateDrips(DSWActor* actor)
ny = sp->y; ny = sp->y;
nz = sp->z; nz = sp->z;
w = SpawnSprite(STAT_SHRAP, COOLG_DRIP, s_CoolgDrip, sp->sectnum, auto actorNew = SpawnActor(STAT_SHRAP, COOLG_DRIP, s_CoolgDrip, sp->sectnum,
nx, ny, nz, sp->ang, 0); nx, ny, nz, sp->ang, 0);
wp = &sprite[w]; wp = &actorNew->s();
wu = User[w].Data(); wu = actorNew->u();
SetOwner(actor, actorNew);
SetOwner(SpriteNum, w);
wp->yrepeat = wp->xrepeat = 20; wp->yrepeat = wp->xrepeat = 20;
wp->shade = -10; wp->shade = -10;
wp->zvel = 0; wp->zvel = 0;
@ -16733,28 +16727,24 @@ GenerateDrips(DSWActor* actor)
return 1; return 1;
} }
int int InitEelFire(DSWActor* actor)
InitEelFire(DSWActor* actor)
{ {
USER* u = actor->u(); USER* u = actor->u();
int SpriteNum = u->SpriteNum; SPRITEp sp = &actor->s();
USERp hu; USERp hu;
SPRITEp sp = User[SpriteNum]->SpriteP;
SPRITEp hp; SPRITEp hp;
int i;
unsigned stat; unsigned stat;
int dist, a, b, c; int dist, a, b, c;
for (stat = 0; stat < SIZ(StatDamageList); stat++) for (stat = 0; stat < SIZ(StatDamageList); stat++)
{ {
StatIterator it(StatDamageList[stat]); SWStatIterator it(StatDamageList[stat]);
while ((i = it.NextIndex()) >= 0) while (auto itActor = it.Next())
{ {
auto itActor = &swActors[i]; hp = &itActor->s();
hp = &sprite[i]; hu = itActor->u();
hu = User[i].Data();
if (i == SpriteNum) if (itActor == actor)
continue; continue;
if (itActor != u->targetActor) if (itActor != u->targetActor)
@ -16767,8 +16757,8 @@ InitEelFire(DSWActor* actor)
if (dist < CLOSE_RANGE_DIST_FUDGE(sp, hp, 600) && FACING_RANGE(hp, sp, 150)) if (dist < CLOSE_RANGE_DIST_FUDGE(sp, hp, 600) && FACING_RANGE(hp, sp, 150))
{ {
PlaySound(DIGI_GIBS1, sp, v3df_none); PlaySound(DIGI_GIBS1, actor, v3df_none);
DoDamage(i, SpriteNum); DoDamage(itActor->GetSpriteIndex(), actor->GetSpriteIndex());
} }
else else
InitActorReposition(actor); InitActorReposition(actor);