mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-07 15:31:11 +00:00
- goro.cpp + hornet.cpp.
This commit is contained in:
parent
0437d92f3e
commit
141428f583
3 changed files with 29 additions and 44 deletions
|
@ -481,22 +481,20 @@ ACTOR_ACTION_SET GoroActionSet =
|
||||||
nullptr
|
nullptr
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
int SetupGoro(DSWActor* actor)
|
||||||
SetupGoro(short SpriteNum)
|
|
||||||
{
|
{
|
||||||
auto actor = &swActors[SpriteNum];
|
SPRITEp sp = &actor->s();
|
||||||
SPRITEp sp = &sprite[SpriteNum];
|
|
||||||
USERp u;
|
USERp u;
|
||||||
ANIMATOR DoActorDecide;
|
ANIMATOR DoActorDecide;
|
||||||
|
|
||||||
if (TEST(sp->cstat, CSTAT_SPRITE_RESTORE))
|
if (TEST(sp->cstat, CSTAT_SPRITE_RESTORE))
|
||||||
{
|
{
|
||||||
u = User[SpriteNum].Data();
|
u = actor->u();
|
||||||
ASSERT(u);
|
ASSERT(u);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u = SpawnUser(SpriteNum,GORO_RUN_R0,s_GoroRun[0]);
|
u = SpawnUser(actor, GORO_RUN_R0,s_GoroRun[0]);
|
||||||
u->Health = HEALTH_GORO;
|
u->Health = HEALTH_GORO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -517,7 +515,6 @@ SetupGoro(short SpriteNum)
|
||||||
int NullGoro(DSWActor* actor)
|
int NullGoro(DSWActor* actor)
|
||||||
{
|
{
|
||||||
USER* u = actor->u();
|
USER* u = actor->u();
|
||||||
int SpriteNum = u->SpriteNum;
|
|
||||||
|
|
||||||
if (TEST(u->Flags,SPR_SLIDING))
|
if (TEST(u->Flags,SPR_SLIDING))
|
||||||
DoActorSlide(actor);
|
DoActorSlide(actor);
|
||||||
|
@ -542,18 +539,15 @@ int DoGoroPain(DSWActor* actor)
|
||||||
int DoGoroMove(DSWActor* actor)
|
int DoGoroMove(DSWActor* actor)
|
||||||
{
|
{
|
||||||
USER* u = actor->u();
|
USER* u = actor->u();
|
||||||
int SpriteNum = u->SpriteNum;
|
|
||||||
|
|
||||||
if (TEST(u->Flags,SPR_SLIDING))
|
if (TEST(u->Flags,SPR_SLIDING))
|
||||||
DoActorSlide(actor);
|
DoActorSlide(actor);
|
||||||
|
|
||||||
if (u->track >= 0)
|
if (u->track >= 0)
|
||||||
ActorFollowTrack(SpriteNum, ACTORMOVETICS);
|
ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS);
|
||||||
else
|
else
|
||||||
(*u->ActorActionFunc)(actor);
|
(*u->ActorActionFunc)(actor);
|
||||||
|
|
||||||
ASSERT(User[SpriteNum].Data());
|
|
||||||
|
|
||||||
KeepActorOnFloor(actor);
|
KeepActorOnFloor(actor);
|
||||||
|
|
||||||
DoActorSectorDamage(actor);
|
DoActorSectorDamage(actor);
|
||||||
|
|
|
@ -284,25 +284,23 @@ ACTOR_ACTION_SET HornetActionSet =
|
||||||
nullptr
|
nullptr
|
||||||
};
|
};
|
||||||
|
|
||||||
int DoHornetMatchPlayerZ(short SpriteNum);
|
int DoHornetMatchPlayerZ(DSWActor* actor);
|
||||||
|
|
||||||
|
|
||||||
int
|
int SetupHornet(DSWActor* actor)
|
||||||
SetupHornet(short SpriteNum)
|
|
||||||
{
|
{
|
||||||
auto actor = &swActors[SpriteNum];
|
SPRITEp sp = &actor->s();
|
||||||
SPRITEp sp = &sprite[SpriteNum];
|
|
||||||
USERp u;
|
USERp u;
|
||||||
ANIMATOR DoActorDecide;
|
ANIMATOR DoActorDecide;
|
||||||
|
|
||||||
if (TEST(sp->cstat, CSTAT_SPRITE_RESTORE))
|
if (TEST(sp->cstat, CSTAT_SPRITE_RESTORE))
|
||||||
{
|
{
|
||||||
u = User[SpriteNum].Data();
|
u = actor->u();
|
||||||
ASSERT(u);
|
ASSERT(u);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
u = SpawnUser(SpriteNum,HORNET_RUN_R0,s_HornetRun[0]);
|
u = SpawnUser(actor,HORNET_RUN_R0,s_HornetRun[0]);
|
||||||
u->Health = HEALTH_HORNET;
|
u->Health = HEALTH_HORNET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -328,7 +326,7 @@ SetupHornet(short SpriteNum)
|
||||||
|
|
||||||
// Special looping buzz sound attached to each hornet spawned
|
// Special looping buzz sound attached to each hornet spawned
|
||||||
PlaySound(DIGI_HORNETBUZZ, sp, v3df_follow|v3df_init);
|
PlaySound(DIGI_HORNETBUZZ, sp, v3df_follow|v3df_init);
|
||||||
Set3DSoundOwner(SpriteNum);
|
Set3DSoundOwner(actor->GetSpriteIndex());
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -336,22 +334,22 @@ SetupHornet(short SpriteNum)
|
||||||
int NullHornet(DSWActor* actor)
|
int NullHornet(DSWActor* actor)
|
||||||
{
|
{
|
||||||
USER* u = actor->u();
|
USER* u = actor->u();
|
||||||
int SpriteNum = u->SpriteNum;
|
|
||||||
|
|
||||||
if (TEST(u->Flags,SPR_SLIDING))
|
if (TEST(u->Flags,SPR_SLIDING))
|
||||||
DoActorSlide(actor);
|
DoActorSlide(actor);
|
||||||
|
|
||||||
DoHornetMatchPlayerZ(SpriteNum);
|
DoHornetMatchPlayerZ(actor);
|
||||||
|
|
||||||
DoActorSectorDamage(actor);
|
DoActorSectorDamage(actor);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int DoHornetMatchPlayerZ(short SpriteNum)
|
enum { HORNET_BOB_AMT = (Z(16)) };
|
||||||
|
|
||||||
|
int DoHornetMatchPlayerZ(DSWActor* actor)
|
||||||
{
|
{
|
||||||
SPRITEp sp = &sprite[SpriteNum];
|
SPRITEp sp = &actor->s();
|
||||||
USERp u = User[SpriteNum].Data();
|
USERp u = actor->u();
|
||||||
SPRITEp tsp = &u->targetActor->s();
|
SPRITEp tsp = &u->targetActor->s();
|
||||||
int zdiff,zdist;
|
int zdiff,zdist;
|
||||||
int loz,hiz;
|
int loz,hiz;
|
||||||
|
@ -375,8 +373,6 @@ int DoHornetMatchPlayerZ(short SpriteNum)
|
||||||
u->sz -= 256 * ACTORMOVETICS;
|
u->sz -= 256 * ACTORMOVETICS;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define HORNET_BOB_AMT (Z(16))
|
|
||||||
|
|
||||||
// save off lo and hi z
|
// save off lo and hi z
|
||||||
loz = u->loz;
|
loz = u->loz;
|
||||||
hiz = u->hiz;
|
hiz = u->hiz;
|
||||||
|
@ -426,8 +422,7 @@ int DoHornetMatchPlayerZ(short SpriteNum)
|
||||||
int InitHornetCircle(DSWActor* actor)
|
int InitHornetCircle(DSWActor* actor)
|
||||||
{
|
{
|
||||||
USER* u = actor->u();
|
USER* u = actor->u();
|
||||||
int SpriteNum = u->SpriteNum;
|
SPRITEp sp = &actor->s();
|
||||||
SPRITEp sp = &sprite[SpriteNum];
|
|
||||||
|
|
||||||
u->ActorActionFunc = DoHornetCircle;
|
u->ActorActionFunc = DoHornetCircle;
|
||||||
|
|
||||||
|
@ -459,8 +454,7 @@ int InitHornetCircle(DSWActor* actor)
|
||||||
int DoHornetCircle(DSWActor* actor)
|
int DoHornetCircle(DSWActor* actor)
|
||||||
{
|
{
|
||||||
USER* u = actor->u();
|
USER* u = actor->u();
|
||||||
int SpriteNum = u->SpriteNum;
|
SPRITEp sp = &actor->s();
|
||||||
SPRITEp sp = &sprite[SpriteNum];
|
|
||||||
int nx,ny,bound;
|
int nx,ny,bound;
|
||||||
|
|
||||||
sp->ang = NORM_ANGLE(sp->ang + u->Counter2);
|
sp->ang = NORM_ANGLE(sp->ang + u->Counter2);
|
||||||
|
@ -513,8 +507,7 @@ int
|
||||||
DoHornetDeath(DSWActor* actor)
|
DoHornetDeath(DSWActor* actor)
|
||||||
{
|
{
|
||||||
USER* u = actor->u();
|
USER* u = actor->u();
|
||||||
int SpriteNum = u->SpriteNum;
|
SPRITEp sp = &actor->s();
|
||||||
SPRITEp sp = &sprite[SpriteNum];
|
|
||||||
int nx, ny;
|
int nx, ny;
|
||||||
|
|
||||||
if (TEST(u->Flags, SPR_FALLING))
|
if (TEST(u->Flags, SPR_FALLING))
|
||||||
|
@ -539,7 +532,7 @@ DoHornetDeath(DSWActor* actor)
|
||||||
nx = MulScale(sp->xvel, bcos(sp->ang), 14);
|
nx = MulScale(sp->xvel, bcos(sp->ang), 14);
|
||||||
ny = MulScale(sp->xvel, bsin(sp->ang), 14);
|
ny = MulScale(sp->xvel, bsin(sp->ang), 14);
|
||||||
|
|
||||||
SetCollision(u, move_sprite(SpriteNum, nx, ny, 0L, u->ceiling_dist, u->floor_dist, 1, ACTORMOVETICS));
|
SetCollision(u, move_sprite(actor->GetSpriteIndex(), nx, ny, 0L, u->ceiling_dist, u->floor_dist, 1, ACTORMOVETICS));
|
||||||
|
|
||||||
// on the ground
|
// on the ground
|
||||||
if (sp->z >= u->loz)
|
if (sp->z >= u->loz)
|
||||||
|
@ -558,9 +551,8 @@ DoHornetDeath(DSWActor* actor)
|
||||||
int DoCheckSwarm(DSWActor* actor)
|
int DoCheckSwarm(DSWActor* actor)
|
||||||
{
|
{
|
||||||
USER* u = actor->u();
|
USER* u = actor->u();
|
||||||
int SpriteNum = u->SpriteNum;
|
|
||||||
int i;
|
int i;
|
||||||
SPRITEp sp = &sprite[SpriteNum], tsp;
|
SPRITEp sp = &actor->s(), tsp;
|
||||||
USERp tu;
|
USERp tu;
|
||||||
int dist, pdist, a,b,c;
|
int dist, pdist, a,b,c;
|
||||||
PLAYERp pp;
|
PLAYERp pp;
|
||||||
|
@ -607,8 +599,7 @@ int DoCheckSwarm(DSWActor* actor)
|
||||||
int DoHornetMove(DSWActor* actor)
|
int DoHornetMove(DSWActor* actor)
|
||||||
{
|
{
|
||||||
USER* u = actor->u();
|
USER* u = actor->u();
|
||||||
int SpriteNum = u->SpriteNum;
|
SPRITEp sp = &actor->s();
|
||||||
SPRITEp sp = &sprite[SpriteNum];
|
|
||||||
|
|
||||||
// Check for swarming
|
// Check for swarming
|
||||||
// lotag of 1 = Swarm around lotags of 2
|
// lotag of 1 = Swarm around lotags of 2
|
||||||
|
@ -620,11 +611,11 @@ int DoHornetMove(DSWActor* actor)
|
||||||
DoActorSlide(actor);
|
DoActorSlide(actor);
|
||||||
|
|
||||||
if (u->track >= 0)
|
if (u->track >= 0)
|
||||||
ActorFollowTrack(SpriteNum, ACTORMOVETICS);
|
ActorFollowTrack(actor->GetSpriteIndex(), ACTORMOVETICS);
|
||||||
else
|
else
|
||||||
(*u->ActorActionFunc)(actor);
|
(*u->ActorActionFunc)(actor);
|
||||||
|
|
||||||
DoHornetMatchPlayerZ(SpriteNum);
|
DoHornetMatchPlayerZ(actor);
|
||||||
|
|
||||||
DoActorSectorDamage(actor);
|
DoActorSectorDamage(actor);
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ BEGIN_SW_NS
|
||||||
|
|
||||||
int SetupCoolie(DSWActor*);
|
int SetupCoolie(DSWActor*);
|
||||||
int SetupNinja(short);
|
int SetupNinja(short);
|
||||||
int SetupGoro(short);
|
int SetupGoro(DSWActor*);
|
||||||
int SetupCoolg(DSWActor*);
|
int SetupCoolg(DSWActor*);
|
||||||
int SetupEel(DSWActor*);
|
int SetupEel(DSWActor*);
|
||||||
int SetupSumo(short);
|
int SetupSumo(short);
|
||||||
|
@ -73,7 +73,7 @@ int SetupRipper2(short);
|
||||||
int SetupSerp(short);
|
int SetupSerp(short);
|
||||||
int SetupLava(short);
|
int SetupLava(short);
|
||||||
int SetupSkel(short);
|
int SetupSkel(short);
|
||||||
int SetupHornet(short);
|
int SetupHornet(DSWActor*);
|
||||||
int SetupSkull(short);
|
int SetupSkull(short);
|
||||||
int SetupBetty(short);
|
int SetupBetty(short);
|
||||||
int SetupPachinkoLight(short);
|
int SetupPachinkoLight(short);
|
||||||
|
@ -1223,7 +1223,7 @@ ActorSpawn(SPRITEp sp)
|
||||||
}
|
}
|
||||||
|
|
||||||
PicAnimOff(sp->picnum);
|
PicAnimOff(sp->picnum);
|
||||||
SetupGoro(SpriteNum);
|
SetupGoro(actor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1509,7 +1509,7 @@ ActorSpawn(SPRITEp sp)
|
||||||
}
|
}
|
||||||
|
|
||||||
PicAnimOff(sp->picnum);
|
PicAnimOff(sp->picnum);
|
||||||
SetupHornet(SpriteNum);
|
SetupHornet(actor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue