From e56b055e2e9b732e4be1a4fe6013e17905e3f726 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 5 Nov 2021 15:55:02 +0100 Subject: [PATCH] - Spawn(Goro)FireballExp --- source/games/sw/src/weapon.cpp | 45 +++++++++++++++------------------- source/games/sw/src/weapon.h | 4 +-- 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/source/games/sw/src/weapon.cpp b/source/games/sw/src/weapon.cpp index a1a571888..4be5956bd 100644 --- a/source/games/sw/src/weapon.cpp +++ b/source/games/sw/src/weapon.cpp @@ -7028,7 +7028,7 @@ DoDamage(short SpriteNum, short Weapon) ActorChooseDeath(SpriteNum, Weapon); } - SpawnGoroFireballExp(Weapon); + SpawnGoroFireballExp(weapActor); SetSuicide(weapActor); break; @@ -10697,30 +10697,29 @@ SpawnBreakStaticFlames(int16_t SpriteNum) } -int SpawnFireballExp(DSWActor* actor) +void SpawnFireballExp(DSWActor* actor) { SPRITEp sp = &actor->s(); USERp u = actor->u(); SPRITEp exp; USERp eu; - short explosion; ASSERT(u); if (TEST(u->Flags, SPR_SUICIDE)) - return -1; + return; - PlaySound(DIGI_SMALLEXP, sp, v3df_none); + PlaySound(DIGI_SMALLEXP, actor, v3df_none); - explosion = SpawnSprite(STAT_MISSILE, FIREBALL_EXP, s_FireballExp, sp->sectnum, + auto actorNew = SpawnActor(STAT_MISSILE, FIREBALL_EXP, s_FireballExp, sp->sectnum, sp->x, sp->y, sp->z, sp->ang, 0); - exp = &sprite[explosion]; - eu = User[explosion].Data(); + exp = &actorNew->s(); + eu = actorNew->u(); exp->hitag = LUMINOUS; //Always full brightness exp->xrepeat = 52; exp->yrepeat = 52; - SetOwner(sp->owner, explosion); + SetOwner(GetOwner(actor), actorNew); exp->shade = -40; exp->pal = eu->spal = u->spal; SET(exp->cstat, CSTAT_SPRITE_YCENTER); @@ -10735,35 +10734,32 @@ int SpawnFireballExp(DSWActor* actor) SpawnExpZadjust(actor->GetSpriteIndex(), exp, Z(15), Z(15)); if (RANDOM_P2(1024) < 150) - SpawnFireballFlames(explosion,-1); - return explosion; + SpawnFireballFlames(actorNew->GetSpriteIndex(),-1); } -int -SpawnGoroFireballExp(int16_t Weapon) +void SpawnGoroFireballExp(DSWActor* actor) { - SPRITEp sp = &sprite[Weapon]; - USERp u = User[Weapon].Data(); + SPRITEp sp = &actor->s(); + USERp u = actor->u(); SPRITEp exp; USERp eu; - short explosion; ASSERT(u); if (TEST(u->Flags, SPR_SUICIDE)) - return -1; + return; - PlaySound(DIGI_MEDIUMEXP, sp, v3df_none); + PlaySound(DIGI_MEDIUMEXP, actor, v3df_none); - explosion = SpawnSprite(STAT_MISSILE, 0, s_FireballExp, sp->sectnum, + auto actorNew = SpawnActor(STAT_MISSILE, 0, s_FireballExp, sp->sectnum, sp->x, sp->y, sp->z, sp->ang, 0); - exp = &sprite[explosion]; - eu = User[explosion].Data(); + exp = &actorNew->s(); + eu = actorNew->u(); exp->hitag = LUMINOUS; //Always full brightness exp->xrepeat = 16; exp->yrepeat = 16; - SetOwner(sp->owner, explosion); + SetOwner(GetOwner(actor), actorNew); exp->shade = -40; exp->pal = eu->spal = u->spal; SET(exp->cstat, CSTAT_SPRITE_YCENTER); @@ -10774,8 +10770,7 @@ SpawnGoroFireballExp(int16_t Weapon) // ceilings // - SpawnExpZadjust(Weapon, exp, Z(15), Z(15)); - return explosion; + SpawnExpZadjust(actor->GetSpriteIndex(), exp, Z(15), Z(15)); } void SpawnBoltExp(DSWActor* actor) @@ -11591,7 +11586,7 @@ int DoFireball(DSWActor* actor) if (!hit_burn) { if (u->ID == GORO_FIREBALL) - SpawnGoroFireballExp(actor->GetSpriteIndex()); + SpawnGoroFireballExp(actor); else SpawnFireballExp(actor); } diff --git a/source/games/sw/src/weapon.h b/source/games/sw/src/weapon.h index 58783ff5c..692d938dc 100644 --- a/source/games/sw/src/weapon.h +++ b/source/games/sw/src/weapon.h @@ -81,7 +81,7 @@ DSWActor* QueueWallBlood(DSWActor* hit, short ang); bool SlopeBounce(DSWActor*, bool *hit_wall); int SpawnSwordSparks(PLAYERp pp, short hit_sect, short hit_wall, int hit_x, int hit_y, int hit_z, short hit_ang); DSWActor* SpawnBubble(DSWActor*); -int SpawnFireballExp(DSWActor*); +void SpawnFireballExp(DSWActor*); void SpawnFireballFlames(int16_t SpriteNum,int16_t enemy); int SpawnRadiationCloud(DSWActor* actor); void SpawnGrenadeExp(DSWActor*); @@ -244,7 +244,7 @@ DSWActor* SpawnLargeExp(DSWActor*); void SpawnNuclearExp(DSWActor* actor); void SpawnBoltExp(DSWActor* actor); void SpawnTracerExp(DSWActor* Weapon); -int SpawnGoroFireballExp(int16_t Weapon); +void SpawnGoroFireballExp(DSWActor* Weapon); bool MissileHitMatch(DSWActor* weapActor, int WeaponNum, DSWActor* hitActor); int DoItemFly(DSWActor*); int SpawnVehicleSmoke(DSWActor* actor);