From 93fde48abb3f723c073649299fd02154bc4e6544 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 1 Nov 2021 10:51:25 +0100 Subject: [PATCH] - SpawnRadiationCloud --- source/games/sw/src/jweapon.cpp | 30 +++++++++++++----------------- source/games/sw/src/weapon.h | 2 +- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/source/games/sw/src/jweapon.cpp b/source/games/sw/src/jweapon.cpp index dcf5f04ad..895521fef 100644 --- a/source/games/sw/src/jweapon.cpp +++ b/source/games/sw/src/jweapon.cpp @@ -931,7 +931,7 @@ int DoChemBomb(DSWActor* actor) PlaySound(DIGI_CHEMGAS, sp, v3df_dontpan | v3df_doppler); Set3DSoundOwner(actor->GetSpriteIndex()); } - SpawnRadiationCloud(actor->GetSpriteIndex()); + SpawnRadiationCloud(actor); u->xchange = u->ychange = 0; u->WaitTics -= (MISSILEMOVETICS * 2); if (u->WaitTics <= 0) @@ -979,7 +979,7 @@ int DoChemBomb(DSWActor* actor) PlaySound(DIGI_CHEMGAS, sp, v3df_dontpan | v3df_doppler); Set3DSoundOwner(actor->GetSpriteIndex()); } - SpawnRadiationCloud(actor->GetSpriteIndex()); + SpawnRadiationCloud(actor); u->xchange = u->ychange = 0; u->WaitTics -= (MISSILEMOVETICS * 2); if (u->WaitTics <= 0) @@ -1216,13 +1216,11 @@ int DoCaltrops(DSWActor* actor) // Deadly green gas clouds // ///////////////////////////// -int -SpawnRadiationCloud(short SpriteNum) -{ - SPRITEp sp = &sprite[SpriteNum], np; - USERp u = User[SpriteNum].Data(), nu; - short New; +int SpawnRadiationCloud(DSWActor* actor) +{ + SPRITEp sp = &actor->s(), np; + USERp u = actor->u(), nu; if (!MoveSkip4) return false; @@ -1247,13 +1245,13 @@ SpawnRadiationCloud(short SpriteNum) if (TEST(u->Flags, SPR_UNDERWATER)) return -1; - New = SpawnSprite(STAT_MISSILE, RADIATION_CLOUD, s_RadiationCloud, sp->sectnum, + auto actorNew = SpawnActor(STAT_MISSILE, RADIATION_CLOUD, s_RadiationCloud, sp->sectnum, sp->x, sp->y, sp->z - RANDOM_P2(Z(8)), sp->ang, 0); - np = &sprite[New]; - nu = User[New].Data(); + np = &actorNew->s(); + nu = actorNew->u(); - SetOwner(sp->owner, New); + SetOwner(GetOwner(actor), actorNew); nu->WaitTics = 1 * 120; np->shade = -40; np->xrepeat = 32; @@ -1294,12 +1292,10 @@ SpawnRadiationCloud(short SpriteNum) return false; } -int -DoRadiationCloud(DSWActor* actor) +int DoRadiationCloud(DSWActor* actor) { USER* u = actor->u(); - int SpriteNum = u->SpriteNum; - SPRITEp sp = &sprite[SpriteNum]; + SPRITEp sp = &actor->s(); sp->z -= sp->zvel; @@ -1308,7 +1304,7 @@ DoRadiationCloud(DSWActor* actor) if (u->ID) { - DoFlamesDamageTest(SpriteNum); + DoFlamesDamageTest(actor->GetSpriteIndex()); } return false; diff --git a/source/games/sw/src/weapon.h b/source/games/sw/src/weapon.h index fa5d1337a..8119a3dc4 100644 --- a/source/games/sw/src/weapon.h +++ b/source/games/sw/src/weapon.h @@ -78,7 +78,7 @@ int SpawnSwordSparks(PLAYERp pp, short hit_sect, short hit_wall, int hit_x, int int SpawnBubble(short SpriteNum); int SpawnFireballExp(int16_t Weapon); void SpawnFireballFlames(int16_t SpriteNum,int16_t enemy); -int SpawnRadiationCloud(short SpriteNum); +int SpawnRadiationCloud(DSWActor* actor); int SpawnGrenadeExp(int16_t Weapon); int SpawnSectorExp(int16_t Weapon); int DoShrapVelocity(int16_t SpriteNum);