mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-21 11:11:16 +00:00
- DoActorPickClosePlayer
This commit is contained in:
parent
125159772d
commit
d819d5c862
9 changed files with 38 additions and 36 deletions
|
@ -124,7 +124,7 @@ bool ActorMoveHitReact(DSWActor* actor)
|
|||
if (hitActor->hasU() && hitActor->u()->PlayerP)
|
||||
{
|
||||
// if you ran into a player - call close range functions
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
auto action = ChooseAction(u->Personality->TouchTarget);
|
||||
if (action)
|
||||
{
|
||||
|
@ -297,8 +297,7 @@ bool CanSeePlayer(DSWActor* actor)
|
|||
return false;
|
||||
}
|
||||
|
||||
int
|
||||
CanHitPlayer(DSWActor* actor)
|
||||
int CanHitPlayer(DSWActor* actor)
|
||||
{
|
||||
USERp u = actor->u();
|
||||
SPRITEp sp = &actor->s();
|
||||
|
@ -359,12 +358,11 @@ CanHitPlayer(DSWActor* actor)
|
|||
!AIC - Pick a nearby player to be the actors target
|
||||
*/
|
||||
|
||||
int
|
||||
DoActorPickClosePlayer(short SpriteNum)
|
||||
int DoActorPickClosePlayer(DSWActor* actor)
|
||||
{
|
||||
//extern short Zombies;
|
||||
USERp u = User[SpriteNum].Data();
|
||||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
USERp u = actor->u();
|
||||
SPRITEp sp = &actor->s();
|
||||
int SpriteNum = actor->GetSpriteIndex();
|
||||
int dist, near_dist = MAX_ACTIVE_RANGE, a,b,c;
|
||||
short pnum;
|
||||
PLAYERp pp;
|
||||
|
@ -654,7 +652,7 @@ DoActorActionDecide(short SpriteNum)
|
|||
//if ((User[u->tgt_sp-sprite] &&
|
||||
// User[u->tgt_sp-sprite]->Health <= 0) || RandomRange(1000) > 950)
|
||||
// {
|
||||
// DoActorPickClosePlayer(SpriteNum);
|
||||
// DoActorPickClosePlayer(actor);
|
||||
// InitActorReposition(SpriteNum);
|
||||
// return(action);
|
||||
// }
|
||||
|
@ -751,7 +749,7 @@ DoActorActionDecide(short SpriteNum)
|
|||
// try and find another player
|
||||
// pick a closeby player as the (new) target
|
||||
if (sp->hitag != TAG_SWARMSPOT)
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
|
||||
// if close by
|
||||
dist = Distance(sp->x, sp->y, u->tgt_sp->x, u->tgt_sp->y);
|
||||
|
@ -1435,7 +1433,7 @@ InitActorAttack(DSWActor* actor)
|
|||
if (User[u->tgt_sp-sprite].Data() &&
|
||||
User[u->tgt_sp-sprite]->Health <= 0)
|
||||
{
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
InitActorReposition(actor);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1452,7 +1450,7 @@ InitActorAttack(DSWActor* actor)
|
|||
User[u->tgt_sp-sprite]->PlayerP &&
|
||||
TEST(User[u->tgt_sp-sprite]->PlayerP->Flags, PF_DEAD))
|
||||
{
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
InitActorReposition(actor);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1594,7 +1592,7 @@ InitActorWanderAround(DSWActor* actor)
|
|||
u->ActorActionFunc = DoActorDecide;
|
||||
NewStateGroup(SpriteNum, u->ActorActionSet->Run);
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
|
||||
u->track = FindWanderTrack(u);
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ void DebugMoveHit(DSWActor* actor);
|
|||
bool ActorMoveHitReact(DSWActor* actor);
|
||||
short ChooseActionNumber(short decision[]);
|
||||
bool CanSeePlayer(DSWActor* actor);
|
||||
int DoActorPickClosePlayer(short SpriteNum);
|
||||
int DoActorPickClosePlayer(DSWActor* actor);
|
||||
int CloseRangeDist(SPRITEp sp1,SPRITEp sp2);
|
||||
int InitActorDecide(DSWActor* actor);
|
||||
int DoActorDecide(DSWActor* actor);
|
||||
|
|
|
@ -1038,7 +1038,7 @@ DoBunnyQuickJump(DSWActor* actor)
|
|||
|
||||
if (RandomRange(1000) < 995 && tu->spal != PALETTE_PLAYER0) return false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
|
||||
if (User[u->tgt_sp-sprite]->PlayerP)
|
||||
pp = User[u->tgt_sp-sprite]->PlayerP;
|
||||
|
|
|
@ -570,7 +570,7 @@ int DoCheckSwarm(DSWActor* actor)
|
|||
if (!u->tgt_sp) return 0;
|
||||
|
||||
// Who's the closest meat!?
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
|
||||
if (User[u->tgt_sp - sprite]->PlayerP)
|
||||
{
|
||||
|
|
|
@ -156,7 +156,7 @@ int DoToiletGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,SPRITEp_MID(u->tgt_sp),u->tgt_sp->sectnum);
|
||||
|
||||
if (u->FlagOwner != 1)
|
||||
|
@ -215,7 +215,7 @@ int NullToiletGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,u->tgt_sp->z,u->tgt_sp->sectnum);
|
||||
|
||||
if (!TEST(u->Flags,SPR_CLIMBING))
|
||||
|
@ -399,7 +399,7 @@ int DoWashGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,SPRITEp_MID(u->tgt_sp),u->tgt_sp->sectnum);
|
||||
|
||||
if (RandomRange(1000) > 980 && u->ShellNum <= 0)
|
||||
|
@ -464,7 +464,7 @@ int NullWashGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,u->tgt_sp->z,u->tgt_sp->sectnum);
|
||||
|
||||
if (!TEST(u->Flags,SPR_CLIMBING))
|
||||
|
@ -1279,7 +1279,7 @@ int DoCarGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,SPRITEp_MID(u->tgt_sp),u->tgt_sp->sectnum);
|
||||
|
||||
if (u->FlagOwner == 1)
|
||||
|
@ -1329,7 +1329,7 @@ int NullCarGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,u->tgt_sp->z,u->tgt_sp->sectnum);
|
||||
|
||||
if (!TEST(u->Flags,SPR_CLIMBING))
|
||||
|
@ -1501,7 +1501,7 @@ int DoMechanicGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,SPRITEp_MID(u->tgt_sp),u->tgt_sp->sectnum);
|
||||
|
||||
if (u->FlagOwner == 1)
|
||||
|
@ -1551,7 +1551,7 @@ int NullMechanicGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,u->tgt_sp->z,u->tgt_sp->sectnum);
|
||||
|
||||
if (!TEST(u->Flags,SPR_CLIMBING))
|
||||
|
@ -1724,7 +1724,7 @@ int DoSailorGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,SPRITEp_MID(u->tgt_sp),u->tgt_sp->sectnum);
|
||||
|
||||
if (u->FlagOwner == 1)
|
||||
|
@ -1779,7 +1779,7 @@ int NullSailorGirl(DSWActor* actor)
|
|||
bool ICanSee = false;
|
||||
static short alreadythrew = 0;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,u->tgt_sp->z,u->tgt_sp->sectnum);
|
||||
|
||||
if (!TEST(u->Flags,SPR_CLIMBING))
|
||||
|
@ -1939,7 +1939,7 @@ int DoPruneGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,SPRITEp_MID(u->tgt_sp),u->tgt_sp->sectnum);
|
||||
|
||||
if (u->FlagOwner == 1)
|
||||
|
@ -2005,7 +2005,7 @@ int NullPruneGirl(DSWActor* actor)
|
|||
SPRITEp sp = User[SpriteNum]->SpriteP;
|
||||
bool ICanSee = false;
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
ICanSee = FAFcansee(sp->x,sp->y,SPRITEp_MID(sp),sp->sectnum,u->tgt_sp->x,u->tgt_sp->y,u->tgt_sp->z,u->tgt_sp->sectnum);
|
||||
|
||||
if (!TEST(u->Flags,SPR_CLIMBING))
|
||||
|
|
|
@ -469,7 +469,7 @@ int DoSkullWait(DSWActor* actor)
|
|||
|
||||
DISTANCE(sp->x, sp->y, u->tgt_sp->x, u->tgt_sp->y, dist, a, b, c);
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
|
||||
//if (dist < u->active_range)
|
||||
// return(0);
|
||||
|
@ -884,7 +884,7 @@ int DoBettyWait(DSWActor* actor)
|
|||
|
||||
DISTANCE(sp->x, sp->y, u->tgt_sp->x, u->tgt_sp->y, dist, a, b, c);
|
||||
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
|
||||
//if (dist < u->active_range)
|
||||
// return(0);
|
||||
|
|
|
@ -769,9 +769,10 @@ KillSprite(int16_t SpriteNum)
|
|||
StatIterator it(STAT_ENEMY);
|
||||
while ((i = it.NextIndex()) >= 0)
|
||||
{
|
||||
auto itActor = &swActors[i];
|
||||
if ((unsigned)i < MAXSPRITES && User[i].Data() != nullptr && User[i]->tgt_sp == sp)
|
||||
{
|
||||
DoActorPickClosePlayer(i);
|
||||
DoActorPickClosePlayer(itActor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2919,6 +2919,7 @@ void
|
|||
DoAutoTurretObject(SECTOR_OBJECTp sop)
|
||||
{
|
||||
short SpriteNum = short(sop->sp_child - sprite);
|
||||
auto actor = &swActors[SpriteNum];
|
||||
SPRITEp shootp;
|
||||
USERp u = User[SpriteNum].Data();
|
||||
short delta_ang;
|
||||
|
@ -2936,7 +2937,7 @@ DoAutoTurretObject(SECTOR_OBJECTp sop)
|
|||
{
|
||||
// 4 seconds
|
||||
u->WaitTics = 4*120;
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
}
|
||||
|
||||
if (MoveSkip2 == 0)
|
||||
|
|
|
@ -790,6 +790,7 @@ SpawnZombie(PLAYERp pp, short Weapon)
|
|||
//Zombies++;
|
||||
|
||||
New = SpawnSprite(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], pp->cursectnum, pp->posx, pp->posy, pp->posz, pp->angle.ang.asbuild(), 0);
|
||||
auto actorNew = &swActors[New];
|
||||
np = &sprite[New];
|
||||
nu = User[New].Data();
|
||||
np->sectnum = pp->cursectnum;
|
||||
|
@ -802,7 +803,7 @@ SpawnZombie(PLAYERp pp, short Weapon)
|
|||
SET(nu->Flags2, SPR2_DONT_TARGET_OWNER);
|
||||
SET(np->cstat, CSTAT_SPRITE_TRANSLUCENT);
|
||||
|
||||
DoActorPickClosePlayer(New);
|
||||
DoActorPickClosePlayer(actorNew);
|
||||
//nu->tgt_sp = pp->SpriteP; // Make it target last killed player initially
|
||||
|
||||
// make immediately active
|
||||
|
@ -853,6 +854,7 @@ SpawnZombie2(short Weapon)
|
|||
|
||||
//Zombies++;
|
||||
New = SpawnSprite(STAT_ENEMY, ZOMBIE_RUN_R0, s_ZombieRun[0], sp->sectnum, sp->x, sp->y, sp->z, sp->ang, 0);
|
||||
auto actorNew = &swActors[New];
|
||||
np = &sprite[New];
|
||||
nu = User[New].Data();
|
||||
nu->Counter3 = 0;
|
||||
|
@ -865,7 +867,7 @@ SpawnZombie2(short Weapon)
|
|||
SET(nu->Flags2, SPR2_DONT_TARGET_OWNER);
|
||||
SET(np->cstat, CSTAT_SPRITE_TRANSLUCENT);
|
||||
|
||||
DoActorPickClosePlayer(New);
|
||||
DoActorPickClosePlayer(actorNew);
|
||||
//nu->tgt_sp = pp->SpriteP; // Make it target last killed player initially
|
||||
|
||||
// make immediately active
|
||||
|
@ -896,7 +898,7 @@ DoZombieMove(DSWActor* actor)
|
|||
}
|
||||
|
||||
if (u->tgt_sp && User[u->tgt_sp-sprite].Data() && TEST(User[u->tgt_sp-sprite]->Flags, PF_DEAD)) // JBF: added User[] null check
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
|
||||
// jumping and falling
|
||||
if (TEST(u->Flags, SPR_JUMPING | SPR_FALLING))
|
||||
|
@ -947,7 +949,7 @@ NullZombie(DSWActor* actor)
|
|||
}
|
||||
|
||||
if (u->tgt_sp && User[u->tgt_sp-sprite].Data() && TEST(User[u->tgt_sp-sprite]->Flags, PF_DEAD))
|
||||
DoActorPickClosePlayer(SpriteNum);
|
||||
DoActorPickClosePlayer(actor);
|
||||
|
||||
if (u->WaitTics > 0)
|
||||
u->WaitTics -= ACTORMOVETICS;
|
||||
|
|
Loading…
Reference in a new issue