- SpawnGrenadeSecondaryExp

This commit is contained in:
Christoph Oelckers 2021-11-05 00:20:50 +01:00
parent f3037a0b0c
commit 120a14a9a7

View file

@ -11339,25 +11339,23 @@ SpawnBigGunFlames(int16_t Weapon, int16_t Operator, SECTOR_OBJECTp sop, bool sma
return expActor->GetSpriteIndex(); return expActor->GetSpriteIndex();
} }
int void SpawnGrenadeSecondaryExp(DSWActor* actor, int ang)
SpawnGrenadeSecondaryExp(int16_t Weapon, short ang)
{ {
SPRITEp sp = &sprite[Weapon]; SPRITEp sp = &actor->s();
USERp u = User[Weapon].Data(); USERp u = actor->u();
SPRITEp exp; SPRITEp exp;
USERp eu; USERp eu;
short explosion;
int vel; int vel;
ASSERT(u); ASSERT(u);
explosion = SpawnSprite(STAT_MISSILE, GRENADE_EXP, s_GrenadeSmallExp, sp->sectnum, auto expActor = SpawnActor(STAT_MISSILE, GRENADE_EXP, s_GrenadeSmallExp, sp->sectnum,
sp->x, sp->y, sp->z, sp->ang, 1024); sp->x, sp->y, sp->z, sp->ang, 1024);
exp = &sprite[explosion]; exp = &expActor->s();
eu = User[explosion].Data(); eu = expActor->u();
exp->hitag = LUMINOUS; //Always full brightness exp->hitag = LUMINOUS; //Always full brightness
SetOwner(sp->owner, explosion); SetOwner(GetOwner(actor), expActor);
exp->shade = -40; exp->shade = -40;
exp->xrepeat = 32; exp->xrepeat = 32;
exp->yrepeat = 32; exp->yrepeat = 32;
@ -11372,30 +11370,23 @@ SpawnGrenadeSecondaryExp(int16_t Weapon, short ang)
eu->xchange = MOVEx(vel, ang); eu->xchange = MOVEx(vel, ang);
eu->ychange = MOVEy(vel, ang); eu->ychange = MOVEy(vel, ang);
SetCollision(eu, move_missile(explosion, eu->xchange, eu->ychange, 0, SetCollision(eu, move_missile(expActor->GetSpriteIndex(), eu->xchange, eu->ychange, 0,
eu->ceiling_dist, eu->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS)); eu->ceiling_dist, eu->floor_dist, CLIPMASK_MISSILE, MISSILEMOVETICS));
if (FindDistance3D(exp->x - sp->x, exp->y - sp->y, exp->z - sp->z) < 1024) if (FindDistance3D(exp->x - sp->x, exp->y - sp->y, exp->z - sp->z) < 1024)
{ {
KillSprite(explosion); KillActor(expActor);
return -1; return;
} }
SpawnExpZadjust(Weapon, exp, Z(50), Z(10)); SpawnExpZadjust(actor->GetSpriteIndex(), exp, Z(50), Z(10));
exp->backuppos(); exp->backuppos();
return explosion;
} }
int int SpawnGrenadeSmallExp(DSWActor* actor)
SpawnGrenadeSmallExp(DSWActor* actor)
{ {
USER* u = actor->u(); int ang = RANDOM_P2(2048);
short ang; SpawnGrenadeSecondaryExp(actor, ang);
ang = RANDOM_P2(2048);
SpawnGrenadeSecondaryExp(u->SpriteNum, ang);
return 0; return 0;
} }