RingRacers/src/objects/waterfall-particle.c
2025-02-13 15:32:26 -06:00

38 lines
1.3 KiB
C

// DR. ROBOTNIK'S RING RACERS
//-----------------------------------------------------------------------------
// Copyright (C) 2025 by Kart Krew
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
/// \file waterfall-particle.c
/// \brief Waterfall particle spawner.
#include "../p_local.h"
#include "../m_random.h"
#include "../k_objects.h"
void Obj_WaterfallParticleThink(mobj_t *mo)
{
const INT32 radius = 320;
const INT32 momz = (mo->spawnpoint->angle) ? mo->spawnpoint->angle : 8;
INT32 x = P_RandomRange(PR_DECORATION, -radius, radius)*mapobjectscale;
INT32 y = P_RandomRange(PR_DECORATION, -radius, radius)*mapobjectscale;
mobj_t *particle = P_SpawnMobj(mo->x + x , mo->y + y , mo->z, MT_THOK);
P_SetMobjState(particle, S_WATERFALLPARTICLE);
particle->momx = P_RandomRange(PR_DECORATION, -5, 5)*mapobjectscale;
particle->momy = P_RandomRange(PR_DECORATION, -5, 5)*mapobjectscale;
particle->momz = P_RandomRange(PR_DECORATION, momz/2, momz)*mapobjectscale*P_MobjFlip(mo);
P_InstaScale(particle, 3 * particle->scale);
if (mo->eflags & MFE_VERTICALFLIP)
{
particle->eflags |= MFE_VERTICALFLIP;
particle->flags2 |= MF2_OBJECTFLIP;
}
}