mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-21 19:21:44 +00:00
- the final s() in SW.
This commit is contained in:
parent
6729dbd684
commit
4dad58e557
1 changed files with 43 additions and 57 deletions
|
@ -10929,7 +10929,6 @@ int DoFireball(DSWActor* actor)
|
||||||
{
|
{
|
||||||
case kHitSprite:
|
case kHitSprite:
|
||||||
{
|
{
|
||||||
SPRITEp hsp;
|
|
||||||
USERp hu;
|
USERp hu;
|
||||||
|
|
||||||
auto hitActor = u->coll.actor();
|
auto hitActor = u->coll.actor();
|
||||||
|
@ -11654,16 +11653,15 @@ int DoSerpRing(DSWActor* actor)
|
||||||
u->ID = SKULL_SERP;
|
u->ID = SKULL_SERP;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
auto osp = &own->s();
|
|
||||||
auto ou = own->u();
|
auto ou = own->u();
|
||||||
|
|
||||||
// move the center with the player
|
// move the center with the player
|
||||||
actor->spr.pos.X = osp->pos.X;
|
actor->spr.pos.X = own->spr.pos.X;
|
||||||
actor->spr.pos.Y = osp->pos.Y;
|
actor->spr.pos.Y = own->spr.pos.Y;
|
||||||
|
|
||||||
actor->spr.pos.Z += actor->spr.zvel;
|
actor->spr.pos.Z += actor->spr.zvel;
|
||||||
if (actor->spr.pos.Z > osp->pos.Z - u->sz)
|
if (actor->spr.pos.Z > own->spr.pos.Z - u->sz)
|
||||||
actor->spr.pos.Z = osp->pos.Z - u->sz;
|
actor->spr.pos.Z = own->spr.pos.Z - u->sz;
|
||||||
|
|
||||||
// go out until its time to come back in
|
// go out until its time to come back in
|
||||||
if (u->Counter2 == false)
|
if (u->Counter2 == false)
|
||||||
|
@ -12214,7 +12212,6 @@ int InitSwordAttack(PLAYERp pp)
|
||||||
if (TEST(pp->Flags, PF_DIVING))
|
if (TEST(pp->Flags, PF_DIVING))
|
||||||
{
|
{
|
||||||
DSWActor* bubble;
|
DSWActor* bubble;
|
||||||
SPRITEp bp;
|
|
||||||
int nx, ny;
|
int nx, ny;
|
||||||
short random_amt;
|
short random_amt;
|
||||||
|
|
||||||
|
@ -12229,15 +12226,13 @@ int InitSwordAttack(PLAYERp pp)
|
||||||
bubble = SpawnBubble(pp->Actor());
|
bubble = SpawnBubble(pp->Actor());
|
||||||
if (bubble != nullptr)
|
if (bubble != nullptr)
|
||||||
{
|
{
|
||||||
bp = &bubble->s();
|
bubble->spr.ang = pp->angle.ang.asbuild();
|
||||||
|
|
||||||
bp->ang = pp->angle.ang.asbuild();
|
|
||||||
|
|
||||||
random_amt = (RANDOM_P2(32 << 8) >> 8) - 16;
|
random_amt = (RANDOM_P2(32 << 8) >> 8) - 16;
|
||||||
|
|
||||||
// back it up a bit to get it out of your face
|
// back it up a bit to get it out of your face
|
||||||
nx = MOVEx((1024 + 256) * 3, NORM_ANGLE(bp->ang + dangs[i] + random_amt));
|
nx = MOVEx((1024 + 256) * 3, NORM_ANGLE(bubble->spr.ang + dangs[i] + random_amt));
|
||||||
ny = MOVEy((1024 + 256) * 3, NORM_ANGLE(bp->ang + dangs[i] + random_amt));
|
ny = MOVEy((1024 + 256) * 3, NORM_ANGLE(bubble->spr.ang + dangs[i] + random_amt));
|
||||||
|
|
||||||
move_missile(bubble, nx, ny, 0, u->ceiling_dist, u->floor_dist, CLIPMASK_PLAYER, 1);
|
move_missile(bubble, nx, ny, 0, u->ceiling_dist, u->floor_dist, CLIPMASK_PLAYER, 1);
|
||||||
}
|
}
|
||||||
|
@ -12382,7 +12377,6 @@ int InitFistAttack(PLAYERp pp)
|
||||||
{
|
{
|
||||||
DSWActor* plActor = pp->actor;
|
DSWActor* plActor = pp->actor;
|
||||||
USERp u = plActor->u(),tu;
|
USERp u = plActor->u(),tu;
|
||||||
auto psp = &plActor->s();
|
|
||||||
unsigned stat;
|
unsigned stat;
|
||||||
int dist;
|
int dist;
|
||||||
short reach,face;
|
short reach,face;
|
||||||
|
@ -12392,7 +12386,6 @@ int InitFistAttack(PLAYERp pp)
|
||||||
if (TEST(pp->Flags, PF_DIVING))
|
if (TEST(pp->Flags, PF_DIVING))
|
||||||
{
|
{
|
||||||
DSWActor* bubble;
|
DSWActor* bubble;
|
||||||
SPRITEp bp;
|
|
||||||
int nx,ny;
|
int nx,ny;
|
||||||
short random_amt;
|
short random_amt;
|
||||||
|
|
||||||
|
@ -12406,15 +12399,13 @@ int InitFistAttack(PLAYERp pp)
|
||||||
bubble = SpawnBubble(pp->Actor());
|
bubble = SpawnBubble(pp->Actor());
|
||||||
if (bubble != nullptr)
|
if (bubble != nullptr)
|
||||||
{
|
{
|
||||||
bp = &bubble->s();
|
bubble->spr.ang = pp->angle.ang.asbuild();
|
||||||
|
|
||||||
bp->ang = pp->angle.ang.asbuild();
|
|
||||||
|
|
||||||
random_amt = (RANDOM_P2(32<<8)>>8) - 16;
|
random_amt = (RANDOM_P2(32<<8)>>8) - 16;
|
||||||
|
|
||||||
// back it up a bit to get it out of your face
|
// back it up a bit to get it out of your face
|
||||||
nx = MOVEx((1024+256)*3, NORM_ANGLE(bp->ang + dangs[i] + random_amt));
|
nx = MOVEx((1024+256)*3, NORM_ANGLE(bubble->spr.ang + dangs[i] + random_amt));
|
||||||
ny = MOVEy((1024+256)*3, NORM_ANGLE(bp->ang + dangs[i] + random_amt));
|
ny = MOVEy((1024+256)*3, NORM_ANGLE(bubble->spr.ang + dangs[i] + random_amt));
|
||||||
|
|
||||||
move_missile(bubble, nx, ny, 0L, u->ceiling_dist, u->floor_dist, CLIPMASK_PLAYER, 1);
|
move_missile(bubble, nx, ny, 0L, u->ceiling_dist, u->floor_dist, CLIPMASK_PLAYER, 1);
|
||||||
}
|
}
|
||||||
|
@ -12449,7 +12440,7 @@ int InitFistAttack(PLAYERp pp)
|
||||||
{
|
{
|
||||||
if (SpriteOverlapZ(pp->Actor(), itActor, Z(20)) || face == 190)
|
if (SpriteOverlapZ(pp->Actor(), itActor, Z(20)) || face == 190)
|
||||||
{
|
{
|
||||||
if (FAFcansee(itActor->spr.pos.X, itActor->spr.pos.Y, ActorZOfMiddle(itActor), itActor->spr.sector(), psp->pos.X, psp->pos.Y, ActorZOfMiddle(plActor), psp->sector()))
|
if (FAFcansee(itActor->spr.pos.X, itActor->spr.pos.Y, ActorZOfMiddle(itActor), itActor->spr.sector(), plActor->spr.pos.X, plActor->spr.pos.Y, ActorZOfMiddle(plActor), plActor->spr.sector()))
|
||||||
DoDamage(itActor, plActor);
|
DoDamage(itActor, plActor);
|
||||||
if (face == 190)
|
if (face == 190)
|
||||||
{
|
{
|
||||||
|
@ -12761,9 +12752,8 @@ int InitMiniSumoClap(DSWActor* actor)
|
||||||
|
|
||||||
auto targetActor = u->targetActor;
|
auto targetActor = u->targetActor;
|
||||||
if (!targetActor) return 0;
|
if (!targetActor) return 0;
|
||||||
auto tsp = &targetActor->s();
|
|
||||||
|
|
||||||
dist = Distance(actor->spr.pos.X, actor->spr.pos.Y, tsp->pos.X, tsp->pos.Y);
|
dist = Distance(actor->spr.pos.X, actor->spr.pos.Y, targetActor->spr.pos.X, targetActor->spr.pos.Y);
|
||||||
|
|
||||||
reach = 10000;
|
reach = 10000;
|
||||||
|
|
||||||
|
@ -12771,7 +12761,7 @@ int InitMiniSumoClap(DSWActor* actor)
|
||||||
{
|
{
|
||||||
if (SpriteOverlapZ(actor, targetActor, Z(20)))
|
if (SpriteOverlapZ(actor, targetActor, Z(20)))
|
||||||
{
|
{
|
||||||
if (FAFcansee(tsp->pos.X, tsp->pos.Y, ActorZOfMiddle(targetActor), tsp->sector(), actor->spr.pos.X, actor->spr.pos.Y, ActorZOfMiddle(actor), actor->spr.sector()))
|
if (FAFcansee(targetActor->spr.pos.X, targetActor->spr.pos.Y, ActorZOfMiddle(targetActor), targetActor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, ActorZOfMiddle(actor), actor->spr.sector()))
|
||||||
{
|
{
|
||||||
PlaySound(DIGI_CGTHIGHBONE, actor, v3df_follow | v3df_dontpan);
|
PlaySound(DIGI_CGTHIGHBONE, actor, v3df_follow | v3df_dontpan);
|
||||||
DoDamage(targetActor, actor);
|
DoDamage(targetActor, actor);
|
||||||
|
@ -12780,7 +12770,7 @@ int InitMiniSumoClap(DSWActor* actor)
|
||||||
}
|
}
|
||||||
else if (dist < CloseRangeDist(targetActor, actor, reach))
|
else if (dist < CloseRangeDist(targetActor, actor, reach))
|
||||||
{
|
{
|
||||||
if (FAFcansee(tsp->pos.X, tsp->pos.Y, ActorZOfMiddle(targetActor), tsp->sector(), actor->spr.pos.X, actor->spr.pos.Y, ActorZOfMiddle(actor), actor->spr.sector()))
|
if (FAFcansee(targetActor->spr.pos.X, targetActor->spr.pos.Y, ActorZOfMiddle(targetActor), targetActor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, ActorZOfMiddle(actor), actor->spr.sector()))
|
||||||
{
|
{
|
||||||
PlaySound(DIGI_30MMEXPLODE, actor, v3df_none);
|
PlaySound(DIGI_30MMEXPLODE, actor, v3df_none);
|
||||||
SpawnFireballFlames(actor, targetActor);
|
SpawnFireballFlames(actor, targetActor);
|
||||||
|
@ -12921,16 +12911,15 @@ DSWActor* AimHitscanToTarget(DSWActor* actor, int *z, short *ang, int z_ratio)
|
||||||
if (hitActor == nullptr)
|
if (hitActor == nullptr)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
hp = &hitActor->s();
|
|
||||||
hu = hitActor->u();
|
hu = hitActor->u();
|
||||||
|
|
||||||
SET(hu->Flags, SPR_TARGETED);
|
SET(hu->Flags, SPR_TARGETED);
|
||||||
SET(hu->Flags, SPR_ATTACKED);
|
SET(hu->Flags, SPR_ATTACKED);
|
||||||
|
|
||||||
*ang = getangle(hp->pos.X - actor->spr.pos.X, hp->pos.Y - actor->spr.pos.Y);
|
*ang = getangle(hitActor->spr.pos.X - actor->spr.pos.X, hitActor->spr.pos.Y - actor->spr.pos.Y);
|
||||||
|
|
||||||
// find the distance to the target
|
// find the distance to the target
|
||||||
dist = ksqrt(SQ(actor->spr.pos.X - hp->pos.X) + SQ(actor->spr.pos.Y - hp->pos.Y));
|
dist = ksqrt(SQ(actor->spr.pos.X - hitActor->spr.pos.X) + SQ(actor->spr.pos.Y - hitActor->spr.pos.Y));
|
||||||
|
|
||||||
if (dist != 0)
|
if (dist != 0)
|
||||||
{
|
{
|
||||||
|
@ -12939,10 +12928,10 @@ DSWActor* AimHitscanToTarget(DSWActor* actor, int *z, short *ang, int z_ratio)
|
||||||
xvect = bcos(*ang);
|
xvect = bcos(*ang);
|
||||||
yvect = bsin(*ang);
|
yvect = bsin(*ang);
|
||||||
|
|
||||||
if (hp->pos.X - actor->spr.pos.X != 0)
|
if (hitActor->spr.pos.X - actor->spr.pos.X != 0)
|
||||||
*z = Scale(xvect,zh - *z,hp->pos.X - actor->spr.pos.X);
|
*z = Scale(xvect,zh - *z,hitActor->spr.pos.X - actor->spr.pos.X);
|
||||||
else if (hp->pos.Y - actor->spr.pos.Y != 0)
|
else if (hitActor->spr.pos.Y - actor->spr.pos.Y != 0)
|
||||||
*z = Scale(yvect,zh - *z,hp->pos.Y - actor->spr.pos.Y);
|
*z = Scale(yvect,zh - *z,hitActor->spr.pos.Y - actor->spr.pos.Y);
|
||||||
else
|
else
|
||||||
*z = 0;
|
*z = 0;
|
||||||
|
|
||||||
|
@ -13008,7 +12997,6 @@ DSWActor* WeaponAutoAimHitscan(DSWActor* actor, int *z, short *ang, bool test)
|
||||||
|
|
||||||
void WeaponHitscanShootFeet(DSWActor* actor, DSWActor* hitActor, int *zvect)
|
void WeaponHitscanShootFeet(DSWActor* actor, DSWActor* hitActor, int *zvect)
|
||||||
{
|
{
|
||||||
auto hp = &hitActor->s();
|
|
||||||
int dist;
|
int dist;
|
||||||
int zh;
|
int zh;
|
||||||
int xvect;
|
int xvect;
|
||||||
|
@ -13016,25 +13004,25 @@ void WeaponHitscanShootFeet(DSWActor* actor, DSWActor* hitActor, int *zvect)
|
||||||
int z;
|
int z;
|
||||||
short ang;
|
short ang;
|
||||||
|
|
||||||
ang = NORM_ANGLE(getangle(hp->pos.X - actor->spr.pos.X, hp->pos.Y - actor->spr.pos.Y));
|
ang = NORM_ANGLE(getangle(hitActor->spr.pos.X - actor->spr.pos.X, hitActor->spr.pos.Y - actor->spr.pos.Y));
|
||||||
|
|
||||||
// find the distance to the target
|
// find the distance to the target
|
||||||
dist = ksqrt(SQ(actor->spr.pos.X - hp->pos.X) + SQ(actor->spr.pos.Y - hp->pos.Y));
|
dist = ksqrt(SQ(actor->spr.pos.X - hitActor->spr.pos.X) + SQ(actor->spr.pos.Y - hitActor->spr.pos.Y));
|
||||||
|
|
||||||
if (dist != 0)
|
if (dist != 0)
|
||||||
{
|
{
|
||||||
zh = GetSpriteZOfBottom(hp) + Z(20);
|
zh = ActorZOfBottom(hitActor) + Z(20);
|
||||||
z = actor->spr.pos.Z;
|
z = actor->spr.pos.Z;
|
||||||
|
|
||||||
xvect = bcos(ang);
|
xvect = bcos(ang);
|
||||||
yvect = bsin(ang);
|
yvect = bsin(ang);
|
||||||
|
|
||||||
if (hp->pos.X - actor->spr.pos.X != 0)
|
if (hitActor->spr.pos.X - actor->spr.pos.X != 0)
|
||||||
//*z = xvect * ((zh - *z)/(hp->pos.X - actor->spr.pos.X));
|
//*z = xvect * ((zh - *z)/(hitActor->spr.pos.X - actor->spr.pos.X));
|
||||||
*zvect = Scale(xvect,zh - z, hp->pos.X - actor->spr.pos.X);
|
*zvect = Scale(xvect,zh - z, hitActor->spr.pos.X - actor->spr.pos.X);
|
||||||
else if (hp->pos.Y - actor->spr.pos.Y != 0)
|
else if (hitActor->spr.pos.Y - actor->spr.pos.Y != 0)
|
||||||
//*z = yvect * ((zh - *z)/(hp->pos.Y - actor->spr.pos.Y));
|
//*z = yvect * ((zh - *z)/(hitActor->spr.pos.Y - actor->spr.pos.Y));
|
||||||
*zvect = Scale(yvect,zh - z, hp->pos.Y - actor->spr.pos.Y);
|
*zvect = Scale(yvect,zh - z, hitActor->spr.pos.Y - actor->spr.pos.Y);
|
||||||
else
|
else
|
||||||
*zvect = 0;
|
*zvect = 0;
|
||||||
}
|
}
|
||||||
|
@ -17343,12 +17331,13 @@ int InitEnemyFireball(DSWActor* actor)
|
||||||
512, -512
|
512, -512
|
||||||
};
|
};
|
||||||
|
|
||||||
tsp = &u->targetActor->s();
|
auto targetActor = u->targetActor;
|
||||||
|
if (!targetActor) return 0;
|
||||||
|
|
||||||
PlaySound(DIGI_FIREBALL1, actor, v3df_none);
|
PlaySound(DIGI_FIREBALL1, actor, v3df_none);
|
||||||
|
|
||||||
// get angle to player and also face player when attacking
|
// get angle to player and also face player when attacking
|
||||||
actor->spr.ang = NORM_ANGLE(getangle(tsp->pos.X - actor->spr.pos.X, tsp->pos.Y - actor->spr.pos.Y));
|
actor->spr.ang = NORM_ANGLE(getangle(targetActor->spr.pos.X - actor->spr.pos.X, targetActor->spr.pos.Y - actor->spr.pos.Y));
|
||||||
|
|
||||||
size_z = Z(ActorSizeY(actor));
|
size_z = Z(ActorSizeY(actor));
|
||||||
nz = actor->spr.pos.Z - size_z + (size_z >> 2) + (size_z >> 3) + Z(4);
|
nz = actor->spr.pos.Z - size_z + (size_z >> 2) + (size_z >> 3) + Z(4);
|
||||||
|
@ -17388,11 +17377,10 @@ int InitEnemyFireball(DSWActor* actor)
|
||||||
lastvel = actorNew->spr.zvel;
|
lastvel = actorNew->spr.zvel;
|
||||||
|
|
||||||
// find the distance to the target (player)
|
// find the distance to the target (player)
|
||||||
dist = ksqrt(SQ(actorNew->spr.pos.X - tsp->pos.X) + SQ(actorNew->spr.pos.Y - tsp->pos.Y));
|
dist = ksqrt(SQ(actorNew->spr.pos.X - targetActor->spr.pos.X) + SQ(actorNew->spr.pos.Y - targetActor->spr.pos.Y));
|
||||||
//dist = Distance(actorNew->spr.pos.X, actorNew->spr.pos.Y, tsp->pos.X, tsp->pos.Y);
|
|
||||||
|
|
||||||
// Determine target Z value
|
// Determine target Z value
|
||||||
targ_z = tsp->pos.Z - (Z(ActorSizeY(actor)) >> 1);
|
targ_z = targetActor->spr.pos.Z - (Z(ActorSizeY(actor)) >> 1);
|
||||||
|
|
||||||
// (velocity * difference between the target and the throwing star) /
|
// (velocity * difference between the target and the throwing star) /
|
||||||
// distance
|
// distance
|
||||||
|
@ -17814,29 +17802,27 @@ bool MissileHitDiveArea(DSWActor* actor)
|
||||||
|
|
||||||
DSWActor* SpawnBubble(DSWActor* actor)
|
DSWActor* SpawnBubble(DSWActor* actor)
|
||||||
{
|
{
|
||||||
SPRITEp bp;
|
|
||||||
USERp bu;
|
USERp bu;
|
||||||
|
|
||||||
if (Prediction)
|
if (Prediction)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
auto actorNew = SpawnActor(STAT_MISSILE, BUBBLE, s_Bubble, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
|
auto actorNew = SpawnActor(STAT_MISSILE, BUBBLE, s_Bubble, actor->spr.sector(), actor->spr.pos.X, actor->spr.pos.Y, actor->spr.pos.Z, actor->spr.ang, 0);
|
||||||
bp = &actorNew->s();
|
|
||||||
bu = actorNew->u();
|
bu = actorNew->u();
|
||||||
|
|
||||||
bp->xrepeat = 8 + (RANDOM_P2(8 << 8) >> 8);
|
actorNew->spr.xrepeat = 8 + (RANDOM_P2(8 << 8) >> 8);
|
||||||
bp->yrepeat = bp->xrepeat;
|
actorNew->spr.yrepeat = actorNew->spr.xrepeat;
|
||||||
bu->sx = bp->xrepeat;
|
bu->sx = actorNew->spr.xrepeat;
|
||||||
bu->sy = bp->yrepeat;
|
bu->sy = actorNew->spr.yrepeat;
|
||||||
bu->ceiling_dist = Z(1);
|
bu->ceiling_dist = Z(1);
|
||||||
bu->floor_dist = Z(1);
|
bu->floor_dist = Z(1);
|
||||||
bp->shade = actor->spr.sector()->floorshade - 10;
|
actorNew->spr.shade = actor->spr.sector()->floorshade - 10;
|
||||||
bu->WaitTics = 120 * 120;
|
bu->WaitTics = 120 * 120;
|
||||||
bp->zvel = 512;
|
actorNew->spr.zvel = 512;
|
||||||
bp->clipdist = 12 >> 2;
|
actorNew->spr.clipdist = 12 >> 2;
|
||||||
SET(bp->cstat, CSTAT_SPRITE_YCENTER);
|
SET(actorNew->spr.cstat, CSTAT_SPRITE_YCENTER);
|
||||||
SET(bu->Flags, SPR_UNDERWATER);
|
SET(bu->Flags, SPR_UNDERWATER);
|
||||||
bp->shade = -60; // Make em brighter
|
actorNew->spr.shade = -60; // Make em brighter
|
||||||
|
|
||||||
return actorNew;
|
return actorNew;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue