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;
|
SINT8 hdir, vdir, i;
|
||||||
|
int shockscale = shockwave ? 2 : 1;
|
||||||
|
|
||||||
mobj_t *mo = player->mo;
|
mobj_t *mo = player->mo;
|
||||||
angle_t momangle = K_MomentumAngle(mo) + ANGLE_180;
|
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 z = FixedDiv(mo->height, 2 * mo->scale); // P_SpawnMobjFromMobj will rescale
|
||||||
|
|
||||||
fixed_t sparkspeed = mobjinfo[MT_DRIFTELECTRICSPARK].speed;
|
fixed_t sparkspeed = mobjinfo[MT_DRIFTELECTRICSPARK].speed;
|
||||||
fixed_t sparkradius = 2 * mobjinfo[MT_DRIFTELECTRICSPARK].radius;
|
fixed_t sparkradius = 2 * shockscale * 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;
|
|
||||||
|
|
||||||
for (hdir = -1; hdir <= 1; hdir += 2)
|
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->momx += mo->momx; // copy player speed
|
||||||
spark->momy += mo->momy;
|
spark->momy += mo->momy;
|
||||||
spark->momz += P_GetMobjZMovement(mo);
|
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;
|
sparkangle += ANGLE_90;
|
||||||
}
|
}
|
||||||
|
|
@ -9097,7 +9099,7 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
player->strongdriftboost = 85;
|
player->strongdriftboost = 85;
|
||||||
|
|
||||||
K_SpawnDriftBoostExplosion(player, 3);
|
K_SpawnDriftBoostExplosion(player, 3);
|
||||||
K_SpawnDriftElectricSparks(player);
|
K_SpawnDriftElectricSparks(player, K_DriftSparkColor(player, player->driftcharge), false);
|
||||||
}
|
}
|
||||||
else if (player->driftcharge >= dsfour)
|
else if (player->driftcharge >= dsfour)
|
||||||
{
|
{
|
||||||
|
|
@ -9111,7 +9113,7 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
player->strongdriftboost = 125;
|
player->strongdriftboost = 125;
|
||||||
|
|
||||||
K_SpawnDriftBoostExplosion(player, 4);
|
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_StairJankFlip(INT32 value);
|
||||||
INT32 K_GetKartDriftSparkValueForStage(player_t *player, UINT8 stage);
|
INT32 K_GetKartDriftSparkValueForStage(player_t *player, UINT8 stage);
|
||||||
void K_SpawnDriftBoostExplosion(player_t *player, int 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);
|
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);
|
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);
|
void K_DropItems(player_t *player);
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,9 @@ static void Obj_MantaCollide(mobj_t *manta, mobj_t *other)
|
||||||
other->player->gateSound = 0;
|
other->player->gateSound = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
K_SpawnDriftBoostExplosion(other->player, 3);
|
||||||
|
K_SpawnDriftElectricSparks(other->player, SKINCOLOR_CRIMSON, true);
|
||||||
|
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 5; i++)
|
||||||
{
|
{
|
||||||
S_StopSoundByID(other, sfx_gate01 + i);
|
S_StopSoundByID(other, sfx_gate01 + i);
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
#include "../k_waypoint.h"
|
#include "../k_waypoint.h"
|
||||||
#include "../k_respawn.h"
|
#include "../k_respawn.h"
|
||||||
|
|
||||||
#define SPB_SEEKTEST
|
// #define SPB_SEEKTEST
|
||||||
|
|
||||||
#define SPB_SLIPTIDEDELTA (ANG1 * 3)
|
#define SPB_SLIPTIDEDELTA (ANG1 * 3)
|
||||||
#define SPB_STEERDELTA (ANGLE_90 - ANG10)
|
#define SPB_STEERDELTA (ANGLE_90 - ANG10)
|
||||||
|
|
|
||||||
|
|
@ -1925,7 +1925,7 @@ static void K_HandleLapIncrement(player_t *player)
|
||||||
player->startboost = 125;
|
player->startboost = 125;
|
||||||
|
|
||||||
K_SpawnDriftBoostExplosion(player, 4);
|
K_SpawnDriftBoostExplosion(player, 4);
|
||||||
K_SpawnDriftElectricSparks(player);
|
K_SpawnDriftElectricSparks(player, SKINCOLOR_SILVER, false);
|
||||||
|
|
||||||
rainbowstartavailable = false;
|
rainbowstartavailable = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue