mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-27 20:41:46 +00:00
New drift sparks
This commit is contained in:
parent
c46fe65a06
commit
50826ef634
6 changed files with 145 additions and 156 deletions
|
|
@ -6234,12 +6234,12 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
//}
|
//}
|
||||||
|
|
||||||
// Drift Sparks
|
// Drift Sparks
|
||||||
"S_DRIFTSPARK1",
|
"S_DRIFTSPARK_A1",
|
||||||
"S_DRIFTSPARK2",
|
"S_DRIFTSPARK_A2",
|
||||||
"S_DRIFTSPARK3",
|
"S_DRIFTSPARK_A3",
|
||||||
"S_DRIFTSPARK4",
|
"S_DRIFTSPARK_B1",
|
||||||
"S_DRIFTSPARK5",
|
"S_DRIFTSPARK_C1",
|
||||||
"S_DRIFTSPARK6",
|
"S_DRIFTSPARK_C2",
|
||||||
|
|
||||||
// Drift Smoke
|
// Drift Smoke
|
||||||
"S_DRIFTDUST1",
|
"S_DRIFTDUST1",
|
||||||
|
|
@ -7225,7 +7225,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
"MT_SPARKLETRAIL",
|
"MT_SPARKLETRAIL",
|
||||||
"MT_INVULNFLASH",
|
"MT_INVULNFLASH",
|
||||||
"MT_WIPEOUTTRAIL",
|
"MT_WIPEOUTTRAIL",
|
||||||
"MT_DRIFT",
|
"MT_DRIFTSPARK",
|
||||||
"MT_DRIFTDUST",
|
"MT_DRIFTDUST",
|
||||||
|
|
||||||
"MT_FAKESHIELD",
|
"MT_FAKESHIELD",
|
||||||
|
|
|
||||||
72
src/info.c
72
src/info.c
|
|
@ -2566,12 +2566,14 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_RPOP, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_RANDOMITEMPOP4}, // S_RANDOMITEMPOP3
|
{SPR_RPOP, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_RANDOMITEMPOP4}, // S_RANDOMITEMPOP3
|
||||||
{SPR_RPOP, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL}, // S_RANDOMITEMPOP4
|
{SPR_RPOP, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL}, // S_RANDOMITEMPOP4
|
||||||
|
|
||||||
{SPR_DRIF, 0|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK2}, // S_DRIFTSPARK1
|
{SPR_DRIF, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_DRIFTSPARK_A2}, // S_DRIFTSPARK_A1
|
||||||
{SPR_DRIF, 1|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK3}, // S_DRIFTSPARK2
|
{SPR_DRIF, FF_FULLBRIGHT|FF_TRANS20|1, 1, {NULL}, 0, 0, S_DRIFTSPARK_A3}, // S_DRIFTSPARK_A2
|
||||||
{SPR_DRIF, 2|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK1}, // S_DRIFTSPARK3
|
{SPR_DRIF, FF_FULLBRIGHT|FF_TRANS50, 1, {NULL}, 0, 0, S_NULL}, // S_DRIFTSPARK_A3
|
||||||
{SPR_DRIF, 3|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK5}, // S_DRIFTSPARK4
|
|
||||||
{SPR_DRIF, 4|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK6}, // S_DRIFTSPARK5
|
{SPR_DRIF, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_DRIFTSPARK_A2}, // S_DRIFTSPARK_B1 (Loop back to A2)
|
||||||
{SPR_DRIF, 5|FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK4}, // S_DRIFTSPARK6
|
|
||||||
|
{SPR_DRIF, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK_C2}, // S_DRIFTSPARK_C1
|
||||||
|
{SPR_DRIF, FF_FULLBRIGHT|FF_TRANS20, 1, {NULL}, 0, 0, S_DRIFTSPARK_A3}, // S_DRIFTSPARK_C2 (Loop back to A3)
|
||||||
|
|
||||||
{SPR_DUST, 0, 3, {NULL}, 0, 0, S_DRIFTDUST2}, // S_DRIFTDUST1
|
{SPR_DUST, 0, 3, {NULL}, 0, 0, S_DRIFTDUST2}, // S_DRIFTDUST1
|
||||||
{SPR_DUST, 1, 3, {NULL}, 0, 0, S_DRIFTDUST3}, // S_DRIFTDUST2
|
{SPR_DUST, 1, 3, {NULL}, 0, 0, S_DRIFTDUST3}, // S_DRIFTDUST2
|
||||||
|
|
@ -2780,30 +2782,30 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_LIGH, 2, 2, {NULL}, 0, 0, S_LIGHTNING4}, // S_LIGHTNING3
|
{SPR_LIGH, 2, 2, {NULL}, 0, 0, S_LIGHTNING4}, // S_LIGHTNING3
|
||||||
{SPR_LIGH, 3, 2, {NULL}, 0, 0, S_NULL}, // S_LIGHTNING4
|
{SPR_LIGH, 3, 2, {NULL}, 0, 0, S_NULL}, // S_LIGHTNING4
|
||||||
|
|
||||||
{SPR_THNS, 0, 2, {NULL}, 0, 0, S_THUNDERSHIELD2}, // S_THUNDERSHIELD1
|
{SPR_THNS, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_THUNDERSHIELD2}, // S_THUNDERSHIELD1
|
||||||
{SPR_THNS, 1, 2, {NULL}, 0, 0, S_THUNDERSHIELD3}, // S_THUNDERSHIELD2
|
{SPR_THNS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_THUNDERSHIELD3}, // S_THUNDERSHIELD2
|
||||||
{SPR_THNS, 2, 2, {NULL}, 0, 0, S_THUNDERSHIELD4}, // S_THUNDERSHIELD3
|
{SPR_THNS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_THUNDERSHIELD4}, // S_THUNDERSHIELD3
|
||||||
{SPR_THNS, 3, 2, {NULL}, 0, 0, S_THUNDERSHIELD5}, // S_THUNDERSHIELD4
|
{SPR_THNS, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_THUNDERSHIELD5}, // S_THUNDERSHIELD4
|
||||||
{SPR_THNS, 4, 2, {NULL}, 0, 0, S_THUNDERSHIELD6}, // S_THUNDERSHIELD5
|
{SPR_THNS, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_THUNDERSHIELD6}, // S_THUNDERSHIELD5
|
||||||
{SPR_THNS, 5, 2, {NULL}, 0, 0, S_THUNDERSHIELD7}, // S_THUNDERSHIELD6
|
{SPR_THNS, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_THUNDERSHIELD7}, // S_THUNDERSHIELD6
|
||||||
{SPR_THNS, 6, 2, {NULL}, 0, 0, S_THUNDERSHIELD8}, // S_THUNDERSHIELD7
|
{SPR_THNS, FF_FULLBRIGHT|6, 2, {NULL}, 0, 0, S_THUNDERSHIELD8}, // S_THUNDERSHIELD7
|
||||||
{SPR_THNS, 7, 2, {NULL}, 0, 0, S_THUNDERSHIELD9}, // S_THUNDERSHIELD8
|
{SPR_THNS, FF_FULLBRIGHT|7, 2, {NULL}, 0, 0, S_THUNDERSHIELD9}, // S_THUNDERSHIELD8
|
||||||
{SPR_THNS, 8, 2, {NULL}, 0, 0, S_THUNDERSHIELD10}, // S_THUNDERSHIELD9
|
{SPR_THNS, FF_FULLBRIGHT|8, 2, {NULL}, 0, 0, S_THUNDERSHIELD10}, // S_THUNDERSHIELD9
|
||||||
{SPR_THNS, 9, 2, {NULL}, 0, 0, S_THUNDERSHIELD11}, // S_THUNDERSHIELD10
|
{SPR_THNS, FF_FULLBRIGHT|9, 2, {NULL}, 0, 0, S_THUNDERSHIELD11}, // S_THUNDERSHIELD10
|
||||||
{SPR_THNS, 10, 2, {NULL}, 0, 0, S_THUNDERSHIELD12}, // S_THUNDERSHIELD11
|
{SPR_THNS, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_THUNDERSHIELD12}, // S_THUNDERSHIELD11
|
||||||
{SPR_THNS, 11, 2, {NULL}, 0, 0, S_THUNDERSHIELD13}, // S_THUNDERSHIELD12
|
{SPR_THNS, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_THUNDERSHIELD13}, // S_THUNDERSHIELD12
|
||||||
{SPR_THNS, 8, 2, {NULL}, 0, 0, S_THUNDERSHIELD14}, // S_THUNDERSHIELD13
|
{SPR_THNS, FF_FULLBRIGHT|8, 2, {NULL}, 0, 0, S_THUNDERSHIELD14}, // S_THUNDERSHIELD13
|
||||||
{SPR_THNS, 7, 2, {NULL}, 0, 0, S_THUNDERSHIELD15}, // S_THUNDERSHIELD14
|
{SPR_THNS, FF_FULLBRIGHT|7, 2, {NULL}, 0, 0, S_THUNDERSHIELD15}, // S_THUNDERSHIELD14
|
||||||
{SPR_THNS, 6, 2, {NULL}, 0, 0, S_THUNDERSHIELD16}, // S_THUNDERSHIELD15
|
{SPR_THNS, FF_FULLBRIGHT|6, 2, {NULL}, 0, 0, S_THUNDERSHIELD16}, // S_THUNDERSHIELD15
|
||||||
{SPR_THNS, 5, 2, {NULL}, 0, 0, S_THUNDERSHIELD17}, // S_THUNDERSHIELD16
|
{SPR_THNS, FF_FULLBRIGHT|5, 2, {NULL}, 0, 0, S_THUNDERSHIELD17}, // S_THUNDERSHIELD16
|
||||||
{SPR_THNS, 4, 2, {NULL}, 0, 0, S_THUNDERSHIELD18}, // S_THUNDERSHIELD17
|
{SPR_THNS, FF_FULLBRIGHT|4, 2, {NULL}, 0, 0, S_THUNDERSHIELD18}, // S_THUNDERSHIELD17
|
||||||
{SPR_THNS, 3, 2, {NULL}, 0, 0, S_THUNDERSHIELD19}, // S_THUNDERSHIELD18
|
{SPR_THNS, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_THUNDERSHIELD19}, // S_THUNDERSHIELD18
|
||||||
{SPR_THNS, 2, 2, {NULL}, 0, 0, S_THUNDERSHIELD20}, // S_THUNDERSHIELD19
|
{SPR_THNS, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_THUNDERSHIELD20}, // S_THUNDERSHIELD19
|
||||||
{SPR_THNS, 1, 2, {NULL}, 0, 0, S_THUNDERSHIELD21}, // S_THUNDERSHIELD20
|
{SPR_THNS, FF_FULLBRIGHT|1, 2, {NULL}, 0, 0, S_THUNDERSHIELD21}, // S_THUNDERSHIELD20
|
||||||
{SPR_THNS, 0, 2, {NULL}, 0, 0, S_THUNDERSHIELD22}, // S_THUNDERSHIELD21
|
{SPR_THNS, FF_FULLBRIGHT|0, 2, {NULL}, 0, 0, S_THUNDERSHIELD22}, // S_THUNDERSHIELD21
|
||||||
{SPR_THNS, 9, 2, {NULL}, 0, 0, S_THUNDERSHIELD23}, // S_THUNDERSHIELD22
|
{SPR_THNS, FF_FULLBRIGHT|9, 2, {NULL}, 0, 0, S_THUNDERSHIELD23}, // S_THUNDERSHIELD22
|
||||||
{SPR_THNS, 10, 2, {NULL}, 0, 0, S_THUNDERSHIELD24}, // S_THUNDERSHIELD23
|
{SPR_THNS, FF_FULLBRIGHT|10, 2, {NULL}, 0, 0, S_THUNDERSHIELD24}, // S_THUNDERSHIELD23
|
||||||
{SPR_THNS, 11, 2, {NULL}, 0, 0, S_THUNDERSHIELD1}, // S_THUNDERSHIELD24
|
{SPR_THNS, FF_FULLBRIGHT|11, 2, {NULL}, 0, 0, S_THUNDERSHIELD1}, // S_THUNDERSHIELD24
|
||||||
|
|
||||||
{SPR_SINK, 0, 1, {A_SmokeTrailer}, MT_SINKTRAIL, 0, S_SINK}, // S_SINK
|
{SPR_SINK, 0, 1, {A_SmokeTrailer}, MT_SINKTRAIL, 0, S_SINK}, // S_SINK
|
||||||
{SPR_SINK, 0|FF_TRANS80|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_SINK_SHIELD}, // S_SINK_SHIELD
|
{SPR_SINK, 0|FF_TRANS80|FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_SINK_SHIELD}, // S_SINK_SHIELD
|
||||||
|
|
@ -14562,9 +14564,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
{ // MT_DRIFT
|
{ // MT_DRIFTSPARK
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_DRIFTSPARK1, // spawnstate
|
S_DRIFTSPARK_B1,// spawnstate
|
||||||
1000, // spawnhealth
|
1000, // spawnhealth
|
||||||
S_NULL, // seestate
|
S_NULL, // seestate
|
||||||
sfx_None, // seesound
|
sfx_None, // seesound
|
||||||
|
|
@ -14579,13 +14581,13 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL, // xdeathstate
|
S_NULL, // xdeathstate
|
||||||
sfx_None, // deathsound
|
sfx_None, // deathsound
|
||||||
8, // speed
|
8, // speed
|
||||||
64*FRACUNIT, // radius
|
14*FRACUNIT, // radius
|
||||||
64*FRACUNIT, // height
|
14*FRACUNIT, // height
|
||||||
0, // display offset
|
0, // display offset
|
||||||
16, // mass
|
16, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
14
src/info.h
14
src/info.h
|
|
@ -3081,12 +3081,12 @@ typedef enum state
|
||||||
//}
|
//}
|
||||||
|
|
||||||
// Drift Sparks
|
// Drift Sparks
|
||||||
S_DRIFTSPARK1,
|
S_DRIFTSPARK_A1,
|
||||||
S_DRIFTSPARK2,
|
S_DRIFTSPARK_A2,
|
||||||
S_DRIFTSPARK3,
|
S_DRIFTSPARK_A3,
|
||||||
S_DRIFTSPARK4,
|
S_DRIFTSPARK_B1,
|
||||||
S_DRIFTSPARK5,
|
S_DRIFTSPARK_C1,
|
||||||
S_DRIFTSPARK6,
|
S_DRIFTSPARK_C2,
|
||||||
|
|
||||||
// Drift Smoke
|
// Drift Smoke
|
||||||
S_DRIFTDUST1,
|
S_DRIFTDUST1,
|
||||||
|
|
@ -4089,7 +4089,7 @@ typedef enum mobj_type
|
||||||
MT_SPARKLETRAIL,
|
MT_SPARKLETRAIL,
|
||||||
MT_INVULNFLASH,
|
MT_INVULNFLASH,
|
||||||
MT_WIPEOUTTRAIL,
|
MT_WIPEOUTTRAIL,
|
||||||
MT_DRIFT,
|
MT_DRIFTSPARK,
|
||||||
MT_DRIFTDUST,
|
MT_DRIFTDUST,
|
||||||
|
|
||||||
MT_FAKESHIELD,
|
MT_FAKESHIELD,
|
||||||
|
|
|
||||||
96
src/k_kart.c
96
src/k_kart.c
|
|
@ -2211,6 +2211,98 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t angle
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void K_SpawnDriftSparks(player_t *player)
|
||||||
|
{
|
||||||
|
fixed_t newx;
|
||||||
|
fixed_t newy;
|
||||||
|
//fixed_t ground;
|
||||||
|
mobj_t *spark;
|
||||||
|
angle_t travelangle;
|
||||||
|
INT32 i;
|
||||||
|
|
||||||
|
I_Assert(player != NULL);
|
||||||
|
I_Assert(player->mo != NULL);
|
||||||
|
I_Assert(!P_MobjWasRemoved(player->mo));
|
||||||
|
|
||||||
|
if (leveltime % 2 == 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!P_IsObjectOnGround(player->mo))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!player->kartstuff[k_drift] || player->kartstuff[k_driftcharge] < K_GetKartDriftSparkValue(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
/*if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||||
|
ground = player->mo->ceilingz - FixedMul(mobjinfo[MT_DRIFTSPARK].height, player->mo->scale);
|
||||||
|
else
|
||||||
|
ground = player->mo->floorz;*/
|
||||||
|
|
||||||
|
travelangle = player->mo->angle-(ANGLE_45/5)*player->kartstuff[k_drift];
|
||||||
|
|
||||||
|
for (i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(32*FRACUNIT, player->mo->scale));
|
||||||
|
newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(32*FRACUNIT, player->mo->scale));
|
||||||
|
/*#ifdef ESLOPE
|
||||||
|
if (player->mo->standingslope)
|
||||||
|
{
|
||||||
|
ground = P_GetZAt(player->mo->standingslope, newx, newy);
|
||||||
|
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||||
|
ground -= FixedMul(mobjinfo[MT_DRIFTSPARK].height, player->mo->scale);
|
||||||
|
}
|
||||||
|
#endif*/
|
||||||
|
spark = P_SpawnMobj(newx, newy, player->mo->z, MT_DRIFTSPARK);
|
||||||
|
|
||||||
|
P_SetTarget(&spark->target, player->mo);
|
||||||
|
spark->angle = travelangle-(ANGLE_45/5)*player->kartstuff[k_drift];
|
||||||
|
spark->destscale = player->mo->scale;
|
||||||
|
P_SetScale(spark, player->mo->scale);
|
||||||
|
|
||||||
|
spark->momx = player->mo->momx/2;
|
||||||
|
spark->momy = player->mo->momy/2;
|
||||||
|
//spark->momz = player->mo->momz/2;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*2)
|
||||||
|
{
|
||||||
|
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player)*2)+(32*3))
|
||||||
|
spark->color = SKINCOLOR_DUSK; // transition
|
||||||
|
else
|
||||||
|
spark->color = SKINCOLOR_RUBY;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
spark->color = SKINCOLOR_SAPPHIRE;
|
||||||
|
|
||||||
|
if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn > 0) // Inward drifts
|
||||||
|
|| (player->kartstuff[k_drift] < 0 && player->cmd.driftturn < 0))
|
||||||
|
{
|
||||||
|
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|
||||||
|
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
|
||||||
|
P_SetMobjState(spark, S_DRIFTSPARK_A1);
|
||||||
|
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|
||||||
|
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
|
||||||
|
P_SetMobjState(spark, S_DRIFTSPARK_C1);
|
||||||
|
}
|
||||||
|
else if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn < 0) // Outward drifts
|
||||||
|
|| (player->kartstuff[k_drift] < 0 && player->cmd.driftturn > 0))
|
||||||
|
{
|
||||||
|
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|
||||||
|
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
|
||||||
|
P_SetMobjState(spark, S_DRIFTSPARK_C1);
|
||||||
|
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|
||||||
|
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
|
||||||
|
P_SetMobjState(spark, S_DRIFTSPARK_A1);
|
||||||
|
}
|
||||||
|
|
||||||
|
spark->flags2 = (spark->flags2 & ~MF2_DONTDRAW)|(player->mo->eflags & MF2_DONTDRAW);
|
||||||
|
spark->eflags = (spark->eflags & ~MFE_VERTICALFLIP)|(player->mo->eflags & MFE_VERTICALFLIP);
|
||||||
|
spark->eflags = (spark->eflags & ~MFE_DRAWONLYFORP1)|(player->mo->eflags & MFE_DRAWONLYFORP1);
|
||||||
|
spark->eflags = (spark->eflags & ~MFE_DRAWONLYFORP2)|(player->mo->eflags & MFE_DRAWONLYFORP2);
|
||||||
|
spark->eflags = (spark->eflags & ~MFE_DRAWONLYFORP3)|(player->mo->eflags & MFE_DRAWONLYFORP3);
|
||||||
|
spark->eflags = (spark->eflags & ~MFE_DRAWONLYFORP4)|(player->mo->eflags & MFE_DRAWONLYFORP4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void K_SpawnBoostTrail(player_t *player)
|
void K_SpawnBoostTrail(player_t *player)
|
||||||
{
|
{
|
||||||
fixed_t newx;
|
fixed_t newx;
|
||||||
|
|
@ -3763,8 +3855,8 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
}
|
}
|
||||||
|
|
||||||
// This spawns the drift sparks
|
// This spawns the drift sparks
|
||||||
if (player->kartstuff[k_driftcharge] < dsone && player->kartstuff[k_driftcharge] + driftadditive >= dsone)
|
if (player->kartstuff[k_driftcharge] + driftadditive >= dsone)
|
||||||
P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_DRIFT)->target = player->mo;
|
K_SpawnDriftSparks(player);
|
||||||
|
|
||||||
player->kartstuff[k_driftcharge] += driftadditive;
|
player->kartstuff[k_driftcharge] += driftadditive;
|
||||||
player->kartstuff[k_driftend] = 0;
|
player->kartstuff[k_driftend] = 0;
|
||||||
|
|
|
||||||
|
|
@ -1749,7 +1749,6 @@ static void P_HitDeathMessages(player_t *player, mobj_t *inflictor, mobj_t *sour
|
||||||
str = M_GetText("%s%s's tagging hand %s %s.\n");
|
str = M_GetText("%s%s's tagging hand %s %s.\n");
|
||||||
break;
|
break;
|
||||||
case MT_SPINFIRE:
|
case MT_SPINFIRE:
|
||||||
case MT_SNEAKERTRAIL:
|
|
||||||
str = M_GetText("%s%s's elemental fire trail %s %s.\n");
|
str = M_GetText("%s%s's elemental fire trail %s %s.\n");
|
||||||
break;
|
break;
|
||||||
case MT_THROWNBOUNCE:
|
case MT_THROWNBOUNCE:
|
||||||
|
|
|
||||||
104
src/p_mobj.c
104
src/p_mobj.c
|
|
@ -6614,110 +6614,6 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
//{ SRB2kart mobs
|
//{ SRB2kart mobs
|
||||||
case MT_DRIFT:
|
|
||||||
{
|
|
||||||
if (mobj->target && mobj->target->player && mobj->target->player->mo && mobj->target->player->health > 0 && !mobj->target->player->spectator)
|
|
||||||
{
|
|
||||||
fixed_t HEIGHT;
|
|
||||||
fixed_t radius;
|
|
||||||
|
|
||||||
fixed_t dsone = K_GetKartDriftSparkValue(mobj->target->player);
|
|
||||||
fixed_t dstwo = dsone*2;
|
|
||||||
|
|
||||||
if (mobj->target->player->kartstuff[k_driftcharge] < dsone)
|
|
||||||
{
|
|
||||||
P_RemoveMobj(mobj);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mobj->target->player->kartstuff[k_hyudorotimer] > 0)
|
|
||||||
{
|
|
||||||
if (splitscreen)
|
|
||||||
{
|
|
||||||
if (leveltime & 1)
|
|
||||||
mobj->flags2 |= MF2_DONTDRAW;
|
|
||||||
else
|
|
||||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
|
||||||
|
|
||||||
if (mobj->target->player->kartstuff[k_hyudorotimer] >= (1*TICRATE/2) && mobj->target->player->kartstuff[k_hyudorotimer] <= hyudorotime-(1*TICRATE/2))
|
|
||||||
{
|
|
||||||
if (mobj->target->player == &players[secondarydisplayplayer])
|
|
||||||
mobj->eflags |= MFE_DRAWONLYFORP2;
|
|
||||||
else if (mobj->target->player == &players[thirddisplayplayer] && splitscreen > 1)
|
|
||||||
mobj->eflags |= MFE_DRAWONLYFORP3;
|
|
||||||
else if (mobj->target->player == &players[fourthdisplayplayer] && splitscreen > 2)
|
|
||||||
mobj->eflags |= MFE_DRAWONLYFORP4;
|
|
||||||
else
|
|
||||||
mobj->eflags |= MFE_DRAWONLYFORP1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
mobj->eflags &= ~(MFE_DRAWONLYFORP1|MFE_DRAWONLYFORP2|MFE_DRAWONLYFORP3|MFE_DRAWONLYFORP4);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (mobj->target->player == &players[displayplayer]
|
|
||||||
|| (mobj->target->player != &players[displayplayer]
|
|
||||||
&& (mobj->target->player->kartstuff[k_hyudorotimer] < (1*TICRATE/2) || mobj->target->player->kartstuff[k_hyudorotimer] > hyudorotime-(1*TICRATE/2))))
|
|
||||||
{
|
|
||||||
if (leveltime & 1)
|
|
||||||
mobj->flags2 |= MF2_DONTDRAW;
|
|
||||||
else
|
|
||||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
mobj->flags2 |= MF2_DONTDRAW;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (mobj->target->player->kartstuff[k_hyudorotimer] == 0)
|
|
||||||
{
|
|
||||||
mobj->flags2 &= ~MF2_DONTDRAW;
|
|
||||||
mobj->eflags &= ~(MFE_DRAWONLYFORP1|MFE_DRAWONLYFORP2|MFE_DRAWONLYFORP3|MFE_DRAWONLYFORP4);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Actor's distance from its Target, or Radius.
|
|
||||||
radius = 7*mobj->target->scale;
|
|
||||||
|
|
||||||
// Switch blue flames to red flames
|
|
||||||
if (mobj->target->player && mobj->type == MT_DRIFT
|
|
||||||
&& mobj->target->player->kartstuff[k_driftcharge] >= dstwo
|
|
||||||
&& !(mobj->state >= &states[S_DRIFTSPARK4] && mobj->state <= &states[S_DRIFTSPARK6]))
|
|
||||||
P_SetMobjStateNF(mobj, S_DRIFTSPARK4);
|
|
||||||
|
|
||||||
// Get the angle
|
|
||||||
if (mobj->target->player)
|
|
||||||
mobj->angle = ANGLE_180 + mobj->target->player->frameangle;
|
|
||||||
|
|
||||||
// If the player is on the ceiling, then flip
|
|
||||||
if (mobj->target->eflags & MFE_VERTICALFLIP)
|
|
||||||
{
|
|
||||||
mobj->eflags |= MFE_VERTICALFLIP;
|
|
||||||
HEIGHT = (16<<FRACBITS);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mobj->eflags &= ~MFE_VERTICALFLIP;
|
|
||||||
HEIGHT = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Shrink if the player shrunk too.
|
|
||||||
mobj->scale = mobj->target->scale;
|
|
||||||
|
|
||||||
P_UnsetThingPosition(mobj);
|
|
||||||
{
|
|
||||||
const angle_t fa = mobj->angle>>ANGLETOFINESHIFT;
|
|
||||||
mobj->x = mobj->target->x + FixedMul(finecosine[fa],radius);
|
|
||||||
mobj->y = mobj->target->y + FixedMul(finesine[fa],radius);
|
|
||||||
mobj->z = mobj->target->z - HEIGHT;
|
|
||||||
P_SetThingPosition(mobj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
P_RemoveMobj(mobj);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case MT_ORBINAUT_SHIELD: // Kart orbit/trail items
|
case MT_ORBINAUT_SHIELD: // Kart orbit/trail items
|
||||||
case MT_JAWZ_SHIELD:
|
case MT_JAWZ_SHIELD:
|
||||||
case MT_BANANA_SHIELD:
|
case MT_BANANA_SHIELD:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue