mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-03-26 13:01:52 +00:00
Last 3/4s: Spindash wind
This commit is contained in:
parent
bffc367c36
commit
39acb46903
5 changed files with 73 additions and 9 deletions
|
|
@ -9318,6 +9318,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_WATERTRAILUNDERLAY8",
|
||||
|
||||
"S_SPINDASHDUST",
|
||||
"S_SPINDASHWIND",
|
||||
|
||||
#ifdef SEENAMES
|
||||
"S_NAMECHECK",
|
||||
|
|
@ -10400,6 +10401,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_WATERTRAILUNDERLAY",
|
||||
|
||||
"MT_SPINDASHDUST",
|
||||
"MT_SPINDASHWIND",
|
||||
|
||||
#ifdef SEENAMES
|
||||
"MT_NAMECHECK",
|
||||
|
|
|
|||
29
src/info.c
29
src/info.c
|
|
@ -732,6 +732,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"DBST", // Drift boost plume
|
||||
|
||||
"SDDS", // Spindash dust
|
||||
"SDWN", // Spindash wind
|
||||
};
|
||||
|
||||
char spr2names[NUMPLAYERSPRITES][5] =
|
||||
|
|
@ -5029,6 +5030,7 @@ state_t states[NUMSTATES] =
|
|||
{SPR_WTRL, FF_TRANS50|FF_PAPERSPRITE|15, 2, {NULL}, 0, 0, S_NULL}, // S_WATERTRAILUNDERLAY8
|
||||
|
||||
{SPR_SDDS, FF_ANIMATE, 9, {NULL}, 9, 1, S_NULL}, // S_SPINDASHDUST
|
||||
{SPR_SDWN, FF_ANIMATE|FF_PAPERSPRITE, 18, {NULL}, 9, 2, S_NULL}, // S_SPINDASHWIND
|
||||
|
||||
#ifdef SEENAMES
|
||||
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_NULL}, // S_NAMECHECK
|
||||
|
|
@ -28706,6 +28708,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_SPINDASHWIND
|
||||
-1, // doomednum
|
||||
S_SPINDASHWIND, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_NULL, // seestate
|
||||
sfx_None, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
S_NULL, // meleestate
|
||||
S_NULL, // missilestate
|
||||
S_NULL, // deathstate
|
||||
S_NULL, // xdeathstate
|
||||
sfx_None, // deathsound
|
||||
0, // speed
|
||||
12*FRACUNIT, // radius
|
||||
24*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
// ============================================================================================================================//
|
||||
|
||||
#ifdef SEENAMES
|
||||
|
|
|
|||
|
|
@ -1003,6 +1003,7 @@ typedef enum sprite
|
|||
SPR_DBST, // Drift boost plume
|
||||
|
||||
SPR_SDDS, // Spindash dust
|
||||
SPR_SDWN, // Spindash wind
|
||||
|
||||
SPR_FIRSTFREESLOT,
|
||||
SPR_LASTFREESLOT = SPR_FIRSTFREESLOT + NUMSPRITEFREESLOTS - 1,
|
||||
|
|
@ -5180,6 +5181,7 @@ typedef enum state
|
|||
S_WATERTRAILUNDERLAY8,
|
||||
|
||||
S_SPINDASHDUST,
|
||||
S_SPINDASHWIND,
|
||||
|
||||
#ifdef SEENAMES
|
||||
S_NAMECHECK,
|
||||
|
|
@ -6282,6 +6284,7 @@ typedef enum mobj_type
|
|||
MT_WATERTRAILUNDERLAY,
|
||||
|
||||
MT_SPINDASHDUST,
|
||||
MT_SPINDASHWIND,
|
||||
|
||||
#ifdef SEENAMES
|
||||
MT_NAMECHECK,
|
||||
|
|
|
|||
45
src/k_kart.c
45
src/k_kart.c
|
|
@ -6790,12 +6790,11 @@ boolean K_PlayerEBrake(player_t *player)
|
|||
|
||||
static void K_KartSpindashDust(mobj_t *parent)
|
||||
{
|
||||
fixed_t rad = FixedHypot(parent->radius, parent->radius);
|
||||
fixed_t rad = FixedDiv(FixedHypot(parent->radius, parent->radius), parent->scale);
|
||||
INT32 i;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
|
||||
fixed_t hmomentum = P_RandomRange(6, 12) * parent->scale;
|
||||
fixed_t vmomentum = P_RandomRange(2, 6) * parent->scale;
|
||||
|
||||
|
|
@ -6822,10 +6821,34 @@ static void K_KartSpindashDust(mobj_t *parent)
|
|||
}
|
||||
}
|
||||
|
||||
static void K_KartSpindashWind(mobj_t *parent)
|
||||
{
|
||||
mobj_t *wind = P_SpawnMobjFromMobj(parent,
|
||||
P_RandomRange(-36,36) * FRACUNIT,
|
||||
P_RandomRange(-36,36) * FRACUNIT,
|
||||
FixedDiv(parent->height / 2, parent->scale) + (P_RandomRange(-20,20) * FRACUNIT),
|
||||
MT_SPINDASHWIND
|
||||
);
|
||||
|
||||
P_SetTarget(&wind->target, parent);
|
||||
|
||||
if (parent->momx || parent->momy)
|
||||
wind->angle = R_PointToAngle2(0, 0, parent->momx, parent->momy);
|
||||
else
|
||||
wind->angle = parent->player->drawangle;
|
||||
|
||||
wind->momx = 3 * parent->momx / 4;
|
||||
wind->momy = 3 * parent->momy / 4;
|
||||
wind->momz = 3 * parent->momz / 4;
|
||||
|
||||
K_MatchGenericExtraFlags(wind, parent);
|
||||
}
|
||||
|
||||
static void K_KartSpindash(player_t *player)
|
||||
{
|
||||
const INT16 MAXCHARGETIME = K_GetSpindashChargeTime(player);
|
||||
ticcmd_t *cmd = &player->cmd;
|
||||
boolean spawnWind = (leveltime % 2 == 0);
|
||||
|
||||
if (player->kartstuff[k_spindash] > 0 && (cmd->buttons & (BT_DRIFT|BT_BRAKE)) != (BT_DRIFT|BT_BRAKE))
|
||||
{
|
||||
|
|
@ -6851,6 +6874,12 @@ static void K_KartSpindash(player_t *player)
|
|||
S_StartSound(player->mo, sfx_s23c);
|
||||
}
|
||||
|
||||
|
||||
if ((player->kartstuff[k_spindashboost] > 0) && (spawnWind == true))
|
||||
{
|
||||
K_KartSpindashWind(player->mo);
|
||||
}
|
||||
|
||||
if (player->kartstuff[k_spindashboost] > (TICRATE/2))
|
||||
{
|
||||
K_KartSpindashDust(player->mo);
|
||||
|
|
@ -6878,6 +6907,11 @@ static void K_KartSpindash(player_t *player)
|
|||
spawnOldEffect = false;
|
||||
}
|
||||
|
||||
if (chargetime <= (MAXCHARGETIME / 4) && spawnWind == true)
|
||||
{
|
||||
K_KartSpindashWind(player->mo);
|
||||
}
|
||||
|
||||
if (chargetime > 0)
|
||||
{
|
||||
UINT16 soundcharge = 0;
|
||||
|
|
@ -6896,13 +6930,6 @@ static void K_KartSpindash(player_t *player)
|
|||
{
|
||||
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_NORMAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (player->kartstuff[k_spindash] % 4 == 0)
|
||||
{
|
||||
K_FlameDashLeftoverSmoke(player->mo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -5623,6 +5623,9 @@ static void P_MobjSceneryThink(mobj_t *mobj)
|
|||
if (mobj->tics > 0)
|
||||
mobj->drawflags ^= MFD_DONTDRAW;
|
||||
break;
|
||||
case MT_SPINDASHWIND:
|
||||
mobj->drawflags ^= MFD_DONTDRAW;
|
||||
break;
|
||||
case MT_VWREF:
|
||||
case MT_VWREB:
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue