mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Add shockwave support to K_SpawnDriftElectricSparks
This commit is contained in:
parent
3501ca7976
commit
9ecd5b9c4b
5 changed files with 17 additions and 12 deletions
20
src/k_kart.c
20
src/k_kart.c
|
|
@ -4931,9 +4931,10 @@ static void K_SpawnDriftElectricity(player_t *player)
|
|||
}
|
||||
}
|
||||
|
||||
void K_SpawnDriftElectricSparks(player_t *player)
|
||||
void K_SpawnDriftElectricSparks(player_t *player, int color, boolean shockwave)
|
||||
{
|
||||
SINT8 hdir, vdir, i;
|
||||
int shockscale = shockwave ? 2 : 1;
|
||||
|
||||
mobj_t *mo = player->mo;
|
||||
angle_t momangle = K_MomentumAngle(mo) + ANGLE_180;
|
||||
|
|
@ -4943,12 +4944,7 @@ void K_SpawnDriftElectricSparks(player_t *player)
|
|||
fixed_t z = FixedDiv(mo->height, 2 * mo->scale); // P_SpawnMobjFromMobj will rescale
|
||||
|
||||
fixed_t sparkspeed = mobjinfo[MT_DRIFTELECTRICSPARK].speed;
|
||||
fixed_t sparkradius = 2 * mobjinfo[MT_DRIFTELECTRICSPARK].radius;
|
||||
UINT16 color = K_DriftSparkColor(player, player->driftcharge);
|
||||
|
||||
// if the sparks are spawned from first blood rather than drift boost, color will be SKINCOLOR_NONE. ew!
|
||||
if (color == SKINCOLOR_NONE)
|
||||
color = SKINCOLOR_SILVER;
|
||||
fixed_t sparkradius = 2 * shockscale * mobjinfo[MT_DRIFTELECTRICSPARK].radius;
|
||||
|
||||
for (hdir = -1; hdir <= 1; hdir += 2)
|
||||
{
|
||||
|
|
@ -4971,6 +4967,12 @@ void K_SpawnDriftElectricSparks(player_t *player)
|
|||
spark->momx += mo->momx; // copy player speed
|
||||
spark->momy += mo->momy;
|
||||
spark->momz += P_GetMobjZMovement(mo);
|
||||
spark->destscale = shockscale * spark->scale;
|
||||
P_SetScale(spark, shockscale * spark->scale);
|
||||
spark->radius = shockscale * spark->radius;
|
||||
|
||||
if (shockwave)
|
||||
spark->frame |= FF_ADD;
|
||||
|
||||
sparkangle += ANGLE_90;
|
||||
}
|
||||
|
|
@ -9097,7 +9099,7 @@ static void K_KartDrift(player_t *player, boolean onground)
|
|||
player->strongdriftboost = 85;
|
||||
|
||||
K_SpawnDriftBoostExplosion(player, 3);
|
||||
K_SpawnDriftElectricSparks(player);
|
||||
K_SpawnDriftElectricSparks(player, K_DriftSparkColor(player, player->driftcharge), false);
|
||||
}
|
||||
else if (player->driftcharge >= dsfour)
|
||||
{
|
||||
|
|
@ -9111,7 +9113,7 @@ static void K_KartDrift(player_t *player, boolean onground)
|
|||
player->strongdriftboost = 125;
|
||||
|
||||
K_SpawnDriftBoostExplosion(player, 4);
|
||||
K_SpawnDriftElectricSparks(player);
|
||||
K_SpawnDriftElectricSparks(player, K_DriftSparkColor(player, player->driftcharge), false);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ INT32 K_GetKartDriftSparkValue(player_t *player);
|
|||
INT32 K_StairJankFlip(INT32 value);
|
||||
INT32 K_GetKartDriftSparkValueForStage(player_t *player, UINT8 stage);
|
||||
void K_SpawnDriftBoostExplosion(player_t *player, int stage);
|
||||
void K_SpawnDriftElectricSparks(player_t *player);
|
||||
void K_SpawnDriftElectricSparks(player_t *player, int color, boolean shockwave);
|
||||
void K_KartUpdatePosition(player_t *player);
|
||||
mobj_t *K_CreatePaperItem(fixed_t x, fixed_t y, fixed_t z, angle_t angle, SINT8 flip, UINT8 type, UINT8 amount);
|
||||
void K_DropItems(player_t *player);
|
||||
|
|
|
|||
|
|
@ -138,6 +138,9 @@ static void Obj_MantaCollide(mobj_t *manta, mobj_t *other)
|
|||
other->player->gateSound = 0;
|
||||
}
|
||||
|
||||
K_SpawnDriftBoostExplosion(other->player, 3);
|
||||
K_SpawnDriftElectricSparks(other->player, SKINCOLOR_CRIMSON, true);
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
S_StopSoundByID(other, sfx_gate01 + i);
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
#include "../k_waypoint.h"
|
||||
#include "../k_respawn.h"
|
||||
|
||||
#define SPB_SEEKTEST
|
||||
// #define SPB_SEEKTEST
|
||||
|
||||
#define SPB_SLIPTIDEDELTA (ANG1 * 3)
|
||||
#define SPB_STEERDELTA (ANGLE_90 - ANG10)
|
||||
|
|
|
|||
|
|
@ -1925,7 +1925,7 @@ static void K_HandleLapIncrement(player_t *player)
|
|||
player->startboost = 125;
|
||||
|
||||
K_SpawnDriftBoostExplosion(player, 4);
|
||||
K_SpawnDriftElectricSparks(player);
|
||||
K_SpawnDriftElectricSparks(player, SKINCOLOR_SILVER, false);
|
||||
|
||||
rainbowstartavailable = false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue