- removed all references to tgt_sp from ai.cpp, plus a few others found with search&replace.

This commit is contained in:
Christoph Oelckers 2021-10-30 15:01:38 +02:00
parent b8b90d2825
commit 34d0c12b60
4 changed files with 25 additions and 22 deletions

View file

@ -681,7 +681,7 @@ DoActorActionDecide(short SpriteNum)
} }
// if player is facing me and I'm being attacked // if player is facing me and I'm being attacked
if (FACING(sp, u->tgt_sp()) && TEST(u->Flags, SPR_ATTACKED) && ICanSee) if (Facing(actor, u->targetActor) && TEST(u->Flags, SPR_ATTACKED) && ICanSee)
{ {
// if I'm a target - at least one missile comming at me // if I'm a target - at least one missile comming at me
if (TEST(u->Flags, SPR_TARGETED)) if (TEST(u->Flags, SPR_TARGETED))
@ -745,7 +745,7 @@ DoActorActionDecide(short SpriteNum)
dist = Distance(sp->x, sp->y, u->targetActor->s().x, u->targetActor->s().y); dist = Distance(sp->x, sp->y, u->targetActor->s().x, u->targetActor->s().y);
if (dist < 15000 || ICanSee) if (dist < 15000 || ICanSee)
{ {
if ((FACING(sp, u->tgt_sp()) && dist < 10000) || ICanSee) if ((Facing(actor, u->targetActor) && dist < 10000) || ICanSee)
{ {
DoActorOperate(actor); DoActorOperate(actor);
@ -821,14 +821,14 @@ int DoActorDecide(DSWActor* actor)
return 0; return 0;
// zombie is attacking a player // zombie is attacking a player
if (actor_action == InitActorAttack && u->ID == ZOMBIE_RUN_R0 && User[u->tgt_sp()-sprite]->PlayerP) if (actor_action == InitActorAttack && u->ID == ZOMBIE_RUN_R0 && u->targetActor->u()->PlayerP)
{ {
// Don't let zombies shoot at master // Don't let zombies shoot at master
if (sp->owner == (u->tgt_sp() - sprite)) if (sp->owner == u->targetActor->GetSpriteIndex())
return 0; return 0;
// if this player cannot take damage from this zombie(weapon) return out // if this player cannot take damage from this zombie(weapon) return out
if (!PlayerTakeDamage(User[u->tgt_sp()-sprite]->PlayerP, SpriteNum)) if (!PlayerTakeDamage(u->targetActor->u()->PlayerP, SpriteNum))
return 0; return 0;
} }
@ -1314,25 +1314,24 @@ int InitActorAttack(DSWActor* actor)
SPRITEp sp = User[SpriteNum]->SpriteP; SPRITEp sp = User[SpriteNum]->SpriteP;
// zombie is attacking a player // zombie is attacking a player
if (u->ID == ZOMBIE_RUN_R0 && User[u->tgt_sp()-sprite]->PlayerP) if (u->ID == ZOMBIE_RUN_R0 && u->targetActor->hasU() && u->targetActor->u()->PlayerP)
{ {
// Don't let zombies shoot at master // Don't let zombies shoot at master
if (sp->owner == (u->tgt_sp() - sprite)) if (sp->owner == u->targetActor->GetSpriteIndex())
return 0; return 0;
// if this player cannot take damage from this zombie(weapon) return out // if this player cannot take damage from this zombie(weapon) return out
if (!PlayerTakeDamage(User[u->tgt_sp()-sprite]->PlayerP, SpriteNum)) if (!PlayerTakeDamage(u->targetActor->u()->PlayerP, SpriteNum))
return 0; return 0;
} }
if (TEST(sprite[u->tgt_sp()-sprite].cstat, CSTAT_SPRITE_TRANSLUCENT)) if (TEST(u->targetActor->s().cstat, CSTAT_SPRITE_TRANSLUCENT))
{ {
InitActorRunAway(actor); InitActorRunAway(actor);
return 0; return 0;
} }
if (User[u->tgt_sp()-sprite].Data() && if (u->targetActor->hasU() && u->targetActor->u()->Health <= 0)
User[u->tgt_sp()-sprite]->Health <= 0)
{ {
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
InitActorReposition(actor); InitActorReposition(actor);
@ -1347,9 +1346,8 @@ int InitActorAttack(DSWActor* actor)
// if the guy you are after is dead, look for another and // if the guy you are after is dead, look for another and
// reposition // reposition
if (User[u->tgt_sp()-sprite].Data() && if (u->targetActor->hasU() && u->targetActor->u()->PlayerP &&
User[u->tgt_sp()-sprite]->PlayerP && TEST(u->targetActor->u()->PlayerP->Flags, PF_DEAD))
TEST(User[u->tgt_sp()-sprite]->PlayerP->Flags, PF_DEAD))
{ {
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
InitActorReposition(actor); InitActorReposition(actor);
@ -1365,7 +1363,7 @@ int InitActorAttack(DSWActor* actor)
sp->ang = NORM_ANGLE(getangle(u->targetActor->s().x - sp->x, u->targetActor->s().y - sp->y)); sp->ang = NORM_ANGLE(getangle(u->targetActor->s().x - sp->x, u->targetActor->s().y - sp->y));
// If it's your own kind, lay off! // If it's your own kind, lay off!
if (u->ID == User[u->tgt_sp() - sprite]->ID && !User[u->tgt_sp() - sprite]->PlayerP) if (u->ID == u->targetActor->u()->ID && !u->targetActor->u()->PlayerP)
{ {
InitActorRunAway(actor); InitActorRunAway(actor);
return 0; return 0;

View file

@ -1042,8 +1042,8 @@ DoBunnyQuickJump(DSWActor* actor)
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
if (User[u->tgt_sp()-sprite]->PlayerP) if (u->targetActor->u()->PlayerP)
pp = User[u->tgt_sp()-sprite]->PlayerP; pp = u->targetActor->u()->PlayerP;
if (tu->spal != PALETTE_PLAYER0) if (tu->spal != PALETTE_PLAYER0)
{ {
@ -1058,7 +1058,7 @@ DoBunnyQuickJump(DSWActor* actor)
if (pp == Player+myconnectindex) if (pp == Player+myconnectindex)
{ {
choose_snd = STD_RANDOM_RANGE(2<<8)>>8; choose_snd = STD_RANDOM_RANGE(2<<8)>>8;
if (FAFcansee(sp->x,sp->y,SPRITEp_TOS(sp),sp->sectnum,pp->posx, pp->posy, pp->posz, pp->cursectnum) && FACING(sp, u->tgt_sp())) if (FAFcansee(sp->x,sp->y,SPRITEp_TOS(sp),sp->sectnum,pp->posx, pp->posy, pp->posz, pp->cursectnum) && Facing(actor, u->targetActor))
PlayerSound(fagsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp); PlayerSound(fagsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp);
} }
} }
@ -1074,7 +1074,7 @@ DoBunnyQuickJump(DSWActor* actor)
if (pp == Player+myconnectindex) if (pp == Player+myconnectindex)
{ {
choose_snd = STD_RANDOM_RANGE(3<<8)>>8; choose_snd = STD_RANDOM_RANGE(3<<8)>>8;
if (FAFcansee(sp->x,sp->y,SPRITEp_TOS(sp),sp->sectnum,pp->posx, pp->posy, pp->posz, pp->cursectnum) && FACING(sp, u->tgt_sp())) if (FAFcansee(sp->x,sp->y,SPRITEp_TOS(sp),sp->sectnum,pp->posx, pp->posy, pp->posz, pp->cursectnum) && Facing(actor, u->targetActor))
PlayerSound(straightsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp); PlayerSound(straightsnds[choose_snd], v3df_doppler|v3df_follow|v3df_dontpan,pp);
} }
} }

View file

@ -295,7 +295,6 @@ inline int SPRITEp_SIZE_BOS(const spritetype* sp)
#define KENFACING_PLAYER(pp,sp) (bcos(sp->ang)*(pp->posy-sp->y) >= bsin(sp-ang)*(pp->posx-sp->x)) #define KENFACING_PLAYER(pp,sp) (bcos(sp->ang)*(pp->posy-sp->y) >= bsin(sp-ang)*(pp->posx-sp->x))
#define FACING_PLAYER(pp,sp) (abs(getincangle(getangle((pp)->posx - (sp)->x, (pp)->posy - (sp)->y), (sp)->ang)) < 512) #define FACING_PLAYER(pp,sp) (abs(getincangle(getangle((pp)->posx - (sp)->x, (pp)->posy - (sp)->y), (sp)->ang)) < 512)
#define PLAYER_FACING(pp,sp) (abs(getincangle(getangle((sp)->x - (pp)->posx, (sp)->y - (pp)->posy), (pp)->angle.ang.asbuild())) < 320) #define PLAYER_FACING(pp,sp) (abs(getincangle(getangle((sp)->x - (pp)->posx, (sp)->y - (pp)->posy), (pp)->angle.ang.asbuild())) < 320)
#define FACING(sp1,sp2) (abs(getincangle(getangle((sp1)->x - (sp2)->x, (sp1)->y - (sp2)->y), (sp2)->ang)) < 512)
#define FACING_PLAYER_RANGE(pp,sp,range) (abs(getincangle(getangle((pp)->posx - (sp)->x, (pp)->posy - (sp)->y), (sp)->ang)) < (range)) #define FACING_PLAYER_RANGE(pp,sp,range) (abs(getincangle(getangle((pp)->posx - (sp)->x, (pp)->posy - (sp)->y), (sp)->ang)) < (range))
#define PLAYER_FACING_RANGE(pp,sp,range) (abs(getincangle(getangle((sp)->x - (pp)->posx, (sp)->y - (pp)->posy), (pp)->angle.ang.asbuild())) < (range)) #define PLAYER_FACING_RANGE(pp,sp,range) (abs(getincangle(getangle((sp)->x - (pp)->posx, (sp)->y - (pp)->posy), (pp)->angle.ang.asbuild())) < (range))
@ -2262,6 +2261,12 @@ inline int ActorMid(DSWActor* actor)
return SPRITEp_MID(&actor->s()); return SPRITEp_MID(&actor->s());
} }
inline int Facing(DSWActor* actor1, DSWActor* actor2)
{
auto sp1 = &actor1->s();
auto sp2 = &actor2->s();
return (abs(getincangle(getangle((sp1)->x - (sp2)->x, (sp1)->y - (sp2)->y), (sp2)->ang)) < 512);
}
END_SW_NS END_SW_NS
#endif #endif

View file

@ -572,9 +572,9 @@ int DoCheckSwarm(DSWActor* actor)
// Who's the closest meat!? // Who's the closest meat!?
DoActorPickClosePlayer(actor); DoActorPickClosePlayer(actor);
if (User[u->tgt_sp() - sprite]->PlayerP) if (u->targetActor->u()->PlayerP)
{ {
pp = User[u->tgt_sp() - sprite]->PlayerP; pp = u->targetActor->u()->PlayerP;
DISTANCE(sp->x, sp->y, pp->posx, pp->posy, pdist, a, b, c); DISTANCE(sp->x, sp->y, pp->posx, pp->posy, pdist, a, b, c);
} }
else else