- eu, that are not expActor

This commit is contained in:
Christoph Oelckers 2021-12-26 00:02:17 +01:00
parent 7147d3c89e
commit e16caa0c62
2 changed files with 12 additions and 25 deletions

View file

@ -1133,7 +1133,6 @@ DSWActor* DoPickTarget(DSWActor* actor, uint32_t max_delta_ang, int skip_targets
short angle2, delta_ang; short angle2, delta_ang;
int dist, zh; int dist, zh;
SPRITEp ep; SPRITEp ep;
USERp eu;
int16_t* shp; int16_t* shp;
USERp u = actor->u(); USERp u = actor->u();
int ezh, ezhl, ezhm; int ezh, ezhl, ezhm;
@ -1152,19 +1151,17 @@ DSWActor* DoPickTarget(DSWActor* actor, uint32_t max_delta_ang, int skip_targets
SWStatIterator it(*shp); SWStatIterator it(*shp);
while (auto itActor = it.Next()) while (auto itActor = it.Next())
{ {
eu = itActor->u();
// don't pick yourself // don't pick yourself
if (actor == itActor) if (actor == itActor)
continue; continue;
if (skip_targets != 2) // Used for spriteinfo mode if (skip_targets != 2) // Used for spriteinfo mode
{ {
if (skip_targets && TEST(eu->Flags, SPR_TARGETED)) if (skip_targets && TEST(itActor->user.Flags, SPR_TARGETED))
continue; continue;
// don't pick a dead player // don't pick a dead player
if (eu->PlayerP && TEST(eu->PlayerP->Flags, PF_DEAD)) if (itActor->user.PlayerP && TEST(itActor->user.PlayerP->Flags, PF_DEAD))
continue; continue;
} }

View file

@ -9831,7 +9831,6 @@ int DoSpear(DSWActor* actor)
int SpawnCoolieExp(DSWActor* actor) int SpawnCoolieExp(DSWActor* actor)
{ {
USER* u = actor->u(); USER* u = actor->u();
USERp eu;
int zh,nx,ny; int zh,nx,ny;
@ -9848,16 +9847,14 @@ int SpawnCoolieExp(DSWActor* actor)
auto actorNew = SpawnActor(STAT_MISSILE, BOLT_EXP, s_BoltExp, actor->spr.sector(), auto actorNew = SpawnActor(STAT_MISSILE, BOLT_EXP, s_BoltExp, actor->spr.sector(),
nx, ny, zh, actor->spr.ang, 0); nx, ny, zh, actor->spr.ang, 0);
eu = actorNew->u();
actorNew->spr.hitag = LUMINOUS; //Always full brightness actorNew->spr.hitag = LUMINOUS; //Always full brightness
SetOwner(actor, actorNew); SetOwner(actor, actorNew);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.pal = eu->spal = u->spal; actorNew->spr.pal = actorNew->user.spal = u->spal;
SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER); SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER);
RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
eu->Radius = DamageData[DMG_BOLT_EXP].radius; actorNew->user.Radius = DamageData[DMG_BOLT_EXP].radius;
DoExpDamageTest(actorNew); DoExpDamageTest(actorNew);
return 0; return 0;
} }
@ -9865,26 +9862,24 @@ int SpawnCoolieExp(DSWActor* actor)
void SpawnFireballFlames(DSWActor* actor, DSWActor* enemyActor) void SpawnFireballFlames(DSWActor* actor, DSWActor* enemyActor)
{ {
SPRITEp ep = nullptr; SPRITEp ep = nullptr;
USERp u = actor->u(), eu = nullptr; USERp u = actor->u();
if (TEST(u->Flags, SPR_UNDERWATER)) if (TEST(u->Flags, SPR_UNDERWATER))
return; return;
if (enemyActor != nullptr) if (enemyActor != nullptr)
{ {
eu = enemyActor->u();
// test for already burned // test for already burned
if (TEST(enemyActor->spr.extra, SPRX_BURNABLE) && enemyActor->spr.shade > 40) if (TEST(enemyActor->spr.extra, SPRX_BURNABLE) && enemyActor->spr.shade > 40)
return; return;
if (!eu) if (!enemyActor->hasU())
{ {
ASSERT(true == false); ASSERT(true == false);
return; return;
} }
auto flameActor = eu->flameActor; auto flameActor = enemyActor->user.flameActor;
if (flameActor != nullptr) if (flameActor != nullptr)
{ {
int sizez = ActorSizeZ(enemyActor) + (ActorSizeZ(enemyActor) >> 2); int sizez = ActorSizeZ(enemyActor) + (ActorSizeZ(enemyActor) >> 2);
@ -9923,7 +9918,7 @@ void SpawnFireballFlames(DSWActor* actor, DSWActor* enemyActor)
actorNew->spr.hitag = LUMINOUS; //Always full brightness actorNew->spr.hitag = LUMINOUS; //Always full brightness
if (enemyActor != nullptr) if (enemyActor != nullptr)
eu->flameActor = actorNew; enemyActor->user.flameActor = actorNew;
actorNew->spr.xrepeat = 16; actorNew->spr.xrepeat = 16;
actorNew->spr.yrepeat = 16; actorNew->spr.yrepeat = 16;
@ -10042,7 +10037,6 @@ void SpawnBreakStaticFlames(DSWActor* actor)
void SpawnFireballExp(DSWActor* actor) void SpawnFireballExp(DSWActor* actor)
{ {
USERp u = actor->u(); USERp u = actor->u();
USERp eu;
ASSERT(u); ASSERT(u);
@ -10053,16 +10047,14 @@ void SpawnFireballExp(DSWActor* actor)
auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL_EXP, s_FireballExp, actor->spr.sector(), auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL_EXP, s_FireballExp, actor->spr.sector(),
actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0); actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
eu = actorNew->u();
actorNew->spr.hitag = LUMINOUS; //Always full brightness actorNew->spr.hitag = LUMINOUS; //Always full brightness
actorNew->spr.xrepeat = 52; actorNew->spr.xrepeat = 52;
actorNew->spr.yrepeat = 52; actorNew->spr.yrepeat = 52;
SetOwner(GetOwner(actor), actorNew); SetOwner(GetOwner(actor), actorNew);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.pal = eu->spal = u->spal; actorNew->spr.pal = actorNew->user.spal = u->spal;
SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER); SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER);
SET(eu->Flags, TEST(u->Flags,SPR_UNDERWATER)); SET(actorNew->user.Flags, TEST(u->Flags,SPR_UNDERWATER));
RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);
// //
@ -10079,7 +10071,6 @@ void SpawnFireballExp(DSWActor* actor)
void SpawnGoroFireballExp(DSWActor* actor) void SpawnGoroFireballExp(DSWActor* actor)
{ {
USERp u = actor->u(); USERp u = actor->u();
USERp eu;
ASSERT(u); ASSERT(u);
@ -10090,14 +10081,13 @@ void SpawnGoroFireballExp(DSWActor* actor)
auto actorNew = SpawnActor(STAT_MISSILE, 0, s_FireballExp, actor->spr.sector(), auto actorNew = SpawnActor(STAT_MISSILE, 0, s_FireballExp, actor->spr.sector(),
actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0); actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
eu = actorNew->u();
actorNew->spr.hitag = LUMINOUS; //Always full brightness actorNew->spr.hitag = LUMINOUS; //Always full brightness
actorNew->spr.xrepeat = 16; actorNew->spr.xrepeat = 16;
actorNew->spr.yrepeat = 16; actorNew->spr.yrepeat = 16;
SetOwner(GetOwner(actor), actorNew); SetOwner(GetOwner(actor), actorNew);
actorNew->spr.shade = -40; actorNew->spr.shade = -40;
actorNew->spr.pal = eu->spal = u->spal; actorNew->spr.pal = actorNew->user.spal = u->spal;
SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER); SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER);
RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN); RESET(actorNew->spr.cstat, CSTAT_SPRITE_BLOCK | CSTAT_SPRITE_BLOCK_HITSCAN);