mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'driftspark-update' into air-spark-experiment
This commit is contained in:
commit
a322f4efd4
9 changed files with 322 additions and 130 deletions
|
|
@ -6359,6 +6359,12 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_DRIFTDUST3",
|
"S_DRIFTDUST3",
|
||||||
"S_DRIFTDUST4",
|
"S_DRIFTDUST4",
|
||||||
|
|
||||||
|
// Drift Sparkles
|
||||||
|
"S_DRIFTWARNSPARK1",
|
||||||
|
"S_DRIFTWARNSPARK2",
|
||||||
|
"S_DRIFTWARNSPARK3",
|
||||||
|
"S_DRIFTWARNSPARK4",
|
||||||
|
|
||||||
// Fast lines
|
// Fast lines
|
||||||
"S_FASTLINE1",
|
"S_FASTLINE1",
|
||||||
"S_FASTLINE2",
|
"S_FASTLINE2",
|
||||||
|
|
@ -6375,7 +6381,11 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_FASTDUST6",
|
"S_FASTDUST6",
|
||||||
"S_FASTDUST7",
|
"S_FASTDUST7",
|
||||||
|
|
||||||
// Thunder Shield Burst
|
// Drift boost effect
|
||||||
|
"S_DRIFTEXPLODE1",
|
||||||
|
"S_DRIFTEXPLODE2",
|
||||||
|
"S_DRIFTEXPLODE3",
|
||||||
|
"S_DRIFTEXPLODE4",
|
||||||
|
|
||||||
// Sneaker boost effect
|
// Sneaker boost effect
|
||||||
"S_BOOSTFLAME",
|
"S_BOOSTFLAME",
|
||||||
|
|
@ -7736,6 +7746,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
||||||
|
|
||||||
"MT_FASTLINE",
|
"MT_FASTLINE",
|
||||||
"MT_FASTDUST",
|
"MT_FASTDUST",
|
||||||
|
"MT_DRIFTEXPLODE",
|
||||||
"MT_BOOSTFLAME",
|
"MT_BOOSTFLAME",
|
||||||
"MT_BOOSTSMOKE",
|
"MT_BOOSTSMOKE",
|
||||||
"MT_SNEAKERTRAIL",
|
"MT_SNEAKERTRAIL",
|
||||||
|
|
|
||||||
47
src/info.c
47
src/info.c
|
|
@ -57,10 +57,10 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"SRBL","SRBM","SRBN","SRBO",
|
"SRBL","SRBM","SRBN","SRBO",
|
||||||
//SRB2kart Sprites
|
//SRB2kart Sprites
|
||||||
"RNDM","RPOP","SGNS","FAST","DSHR","BOST","BOSM","KFRE","KINV","KINF",
|
"RNDM","RPOP","SGNS","FAST","DSHR","BOST","BOSM","KFRE","KINV","KINF",
|
||||||
"WIPD","DRIF","BDRF","DUST","RSHE","FITM","BANA","ORBN","JAWZ","SSMN",
|
"WIPD","DRIF","BDRF","DUST","DRWS","RSHE","FITM","BANA","ORBN","JAWZ",
|
||||||
"KRBM","BHOG","BHBM","SPBM","THNS","SINK","SITR","KBLN","DEZL","POKE",
|
"SSMN","KRBM","BHOG","BHBM","SPBM","THNS","SINK","SITR","KBLN","DEZL",
|
||||||
"AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO","CRAB",
|
"POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO",
|
||||||
"BRNG","BUMP","FLEN","CLAS","PSHW","ISTA","ISTB","ARRO","ITEM",
|
"CRAB","BRNG","BUMP","FLEN","CLAS","PSHW","ISTA","ISTB","ARRO","ITEM",
|
||||||
"ITMO","ITMI","ITMN","WANT","PBOM","HIT1","HIT2","HIT3","RETI","AIDU",
|
"ITMO","ITMI","ITMN","WANT","PBOM","HIT1","HIT2","HIT3","RETI","AIDU",
|
||||||
"KSPK","LZI1","LZI2","KLIT","FZSM","FZBM","FPRT","SBUS","MARB","FUFO",
|
"KSPK","LZI1","LZI2","KLIT","FZSM","FZBM","FPRT","SBUS","MARB","FUFO",
|
||||||
"RUST","BLON","VAPE","HTZA","HTZB","SGVA","SGVB","SGVC","PGTR","PGF1",
|
"RUST","BLON","VAPE","HTZA","HTZB","SGVA","SGVB","SGVC","PGTR","PGF1",
|
||||||
|
|
@ -70,7 +70,7 @@ char sprnames[NUMSPRITES + 1][5] =
|
||||||
"DUCK","GTRE","CHES","CHIM","DRGN","LZMN","PGSS","ZTCH","MKMA","MKMP",
|
"DUCK","GTRE","CHES","CHIM","DRGN","LZMN","PGSS","ZTCH","MKMA","MKMP",
|
||||||
"RTCH","BOWL","BOWH","BRRL","BRRR","HRSE","TOAH","BFRT","OFRT","RFRT",
|
"RTCH","BOWL","BOWH","BRRL","BRRR","HRSE","TOAH","BFRT","OFRT","RFRT",
|
||||||
"PFRT","ASPK","HBST","HBSO","HBSF","WBLZ","WBLN","FWRK","MXCL","RGSP",
|
"PFRT","ASPK","HBST","HBSO","HBSF","WBLZ","WBLN","FWRK","MXCL","RGSP",
|
||||||
"DRAF","GRES","OTFG","XMS4","XMS5","VIEW"
|
"DRAF","GRES","OTFG","DBOS","XMS4","XMS5","VIEW"
|
||||||
};
|
};
|
||||||
|
|
||||||
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
|
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
|
||||||
|
|
@ -2597,6 +2597,11 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_DUST, FF_TRANS20|2, 3, {NULL}, 0, 0, S_DRIFTDUST4}, // S_DRIFTDUST3
|
{SPR_DUST, FF_TRANS20|2, 3, {NULL}, 0, 0, S_DRIFTDUST4}, // S_DRIFTDUST3
|
||||||
{SPR_DUST, FF_TRANS20|3, 3, {NULL}, 0, 0, S_NULL}, // S_DRIFTDUST4
|
{SPR_DUST, FF_TRANS20|3, 3, {NULL}, 0, 0, S_NULL}, // S_DRIFTDUST4
|
||||||
|
|
||||||
|
{SPR_DRWS, FF_FULLBRIGHT|0, 3, {NULL}, 0, 0, S_DRIFTWARNSPARK2}, // S_DRIFTWARNSPARK1
|
||||||
|
{SPR_DRWS, FF_FULLBRIGHT|1, 3, {NULL}, 0, 0, S_DRIFTWARNSPARK3}, // S_DRIFTWARNSPARK2
|
||||||
|
{SPR_DRWS, FF_FULLBRIGHT|FF_TRANS20|2, 3, {NULL}, 0, 0, S_DRIFTWARNSPARK4}, // S_DRIFTWARNSPARK3
|
||||||
|
{SPR_DRWS, FF_FULLBRIGHT|FF_TRANS20|3, 3, {NULL}, 0, 0, S_NULL}, // S_DRIFTWARNSPARK4
|
||||||
|
|
||||||
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FASTLINE2}, // S_FASTLINE1
|
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_FASTLINE2}, // S_FASTLINE1
|
||||||
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_FASTLINE3}, // S_FASTLINE2
|
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_FASTLINE3}, // S_FASTLINE2
|
||||||
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_FASTLINE4}, // S_FASTLINE3
|
{SPR_FAST, FF_PAPERSPRITE|FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_FASTLINE4}, // S_FASTLINE3
|
||||||
|
|
@ -2611,6 +2616,11 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_DSHR, FF_PAPERSPRITE|5, 1, {NULL}, 0, 0, S_FASTDUST7}, // S_FASTDUST6
|
{SPR_DSHR, FF_PAPERSPRITE|5, 1, {NULL}, 0, 0, S_FASTDUST7}, // S_FASTDUST6
|
||||||
{SPR_DSHR, FF_PAPERSPRITE|6, 1, {NULL}, 0, 0, S_NULL}, // S_FASTDUST7
|
{SPR_DSHR, FF_PAPERSPRITE|6, 1, {NULL}, 0, 0, S_NULL}, // S_FASTDUST7
|
||||||
|
|
||||||
|
{SPR_DBOS, FF_FULLBRIGHT, 2, {NULL}, 6, 1, S_DRIFTEXPLODE2}, // S_DRIFTEXPLODE1
|
||||||
|
{SPR_DBOS, FF_FULLBRIGHT|1, 2, {NULL}, 6, 1, S_DRIFTEXPLODE3}, // S_DRIFTEXPLODE2
|
||||||
|
{SPR_DBOS, FF_FULLBRIGHT|2, 2, {NULL}, 6, 1, S_DRIFTEXPLODE4}, // S_DRIFTEXPLODE3
|
||||||
|
{SPR_DBOS, FF_FULLBRIGHT|3, 2, {NULL}, 6, 1, S_DRIFTEXPLODE1}, // S_DRIFTEXPLODE4
|
||||||
|
|
||||||
{SPR_BOST, FF_FULLBRIGHT|FF_ANIMATE, TICRATE, {NULL}, 6, 1, S_BOOSTSMOKESPAWNER}, // S_BOOSTFLAME
|
{SPR_BOST, FF_FULLBRIGHT|FF_ANIMATE, TICRATE, {NULL}, 6, 1, S_BOOSTSMOKESPAWNER}, // S_BOOSTFLAME
|
||||||
{SPR_NULL, 0, TICRATE/2, {NULL}, 0, 0, S_NULL}, // S_BOOSTSMOKESPAWNER
|
{SPR_NULL, 0, TICRATE/2, {NULL}, 0, 0, S_NULL}, // S_BOOSTSMOKESPAWNER
|
||||||
|
|
||||||
|
|
@ -15213,6 +15223,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_DRIFTEXPLODE
|
||||||
|
-1, // doomednum
|
||||||
|
S_DRIFTEXPLODE1, // 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
|
||||||
|
8, // speed
|
||||||
|
32*FRACUNIT, // radius
|
||||||
|
64*FRACUNIT, // height
|
||||||
|
1, // display offset
|
||||||
|
100, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
{ // MT_BOOSTFLAME
|
{ // MT_BOOSTFLAME
|
||||||
-1, // doomednum
|
-1, // doomednum
|
||||||
S_BOOSTFLAME, // spawnstate
|
S_BOOSTFLAME, // spawnstate
|
||||||
|
|
|
||||||
16
src/info.h
16
src/info.h
|
|
@ -608,6 +608,7 @@ typedef enum sprite
|
||||||
SPR_DRIF, // Drift Sparks
|
SPR_DRIF, // Drift Sparks
|
||||||
SPR_BDRF, // Brake drift sparks
|
SPR_BDRF, // Brake drift sparks
|
||||||
SPR_DUST, // Drift Dust
|
SPR_DUST, // Drift Dust
|
||||||
|
SPR_DRWS, // Drift dust sparks
|
||||||
|
|
||||||
// Kart Items
|
// Kart Items
|
||||||
SPR_RSHE, // Rocket sneaker
|
SPR_RSHE, // Rocket sneaker
|
||||||
|
|
@ -785,6 +786,8 @@ typedef enum sprite
|
||||||
|
|
||||||
SPR_OTFG,
|
SPR_OTFG,
|
||||||
|
|
||||||
|
SPR_DBOS, // Drift boost flame
|
||||||
|
|
||||||
// Xmas-specific sprites that don't fit aboxe
|
// Xmas-specific sprites that don't fit aboxe
|
||||||
SPR_XMS4,
|
SPR_XMS4,
|
||||||
SPR_XMS5,
|
SPR_XMS5,
|
||||||
|
|
@ -3248,6 +3251,12 @@ typedef enum state
|
||||||
S_DRIFTDUST3,
|
S_DRIFTDUST3,
|
||||||
S_DRIFTDUST4,
|
S_DRIFTDUST4,
|
||||||
|
|
||||||
|
// Drift Sparkles
|
||||||
|
S_DRIFTWARNSPARK1,
|
||||||
|
S_DRIFTWARNSPARK2,
|
||||||
|
S_DRIFTWARNSPARK3,
|
||||||
|
S_DRIFTWARNSPARK4,
|
||||||
|
|
||||||
// Fast lines
|
// Fast lines
|
||||||
S_FASTLINE1,
|
S_FASTLINE1,
|
||||||
S_FASTLINE2,
|
S_FASTLINE2,
|
||||||
|
|
@ -3264,7 +3273,11 @@ typedef enum state
|
||||||
S_FASTDUST6,
|
S_FASTDUST6,
|
||||||
S_FASTDUST7,
|
S_FASTDUST7,
|
||||||
|
|
||||||
// Magnet Burst
|
// Drift boost effect
|
||||||
|
S_DRIFTEXPLODE1,
|
||||||
|
S_DRIFTEXPLODE2,
|
||||||
|
S_DRIFTEXPLODE3,
|
||||||
|
S_DRIFTEXPLODE4,
|
||||||
|
|
||||||
// Sneaker boost effect
|
// Sneaker boost effect
|
||||||
S_BOOSTFLAME,
|
S_BOOSTFLAME,
|
||||||
|
|
@ -4657,6 +4670,7 @@ typedef enum mobj_type
|
||||||
|
|
||||||
MT_FASTLINE,
|
MT_FASTLINE,
|
||||||
MT_FASTDUST,
|
MT_FASTDUST,
|
||||||
|
MT_DRIFTEXPLODE,
|
||||||
MT_BOOSTFLAME,
|
MT_BOOSTFLAME,
|
||||||
MT_BOOSTSMOKE,
|
MT_BOOSTSMOKE,
|
||||||
MT_SNEAKERTRAIL,
|
MT_SNEAKERTRAIL,
|
||||||
|
|
|
||||||
202
src/k_kart.c
202
src/k_kart.c
|
|
@ -3133,8 +3133,62 @@ static mobj_t *K_SpawnKartMissile(mobj_t *source, mobjtype_t type, angle_t an, I
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UINT8 K_DriftSparkColor(player_t *player, INT32 charge)
|
||||||
|
{
|
||||||
|
INT32 ds = K_GetKartDriftSparkValue(player);
|
||||||
|
UINT8 color = SKINCOLOR_NONE;
|
||||||
|
|
||||||
|
if (charge < 0)
|
||||||
|
{
|
||||||
|
// Stage 0: Yellow
|
||||||
|
color = SKINCOLOR_GOLD;
|
||||||
|
}
|
||||||
|
else if (charge >= ds*4)
|
||||||
|
{
|
||||||
|
// Stage 3: Rainbow
|
||||||
|
if (charge <= (ds*4)+(32*3))
|
||||||
|
{
|
||||||
|
// transition
|
||||||
|
color = SKINCOLOR_SILVER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (charge >= ds*2)
|
||||||
|
{
|
||||||
|
// Stage 2: Blue
|
||||||
|
if (charge <= (ds*2)+(32*3))
|
||||||
|
{
|
||||||
|
// transition
|
||||||
|
color = SKINCOLOR_PURPLE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
color = SKINCOLOR_SAPPHIRE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (charge >= ds)
|
||||||
|
{
|
||||||
|
// Stage 1: Red
|
||||||
|
if (charge <= (ds)+(32*3))
|
||||||
|
{
|
||||||
|
// transition
|
||||||
|
color = SKINCOLOR_TANGERINE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
color = SKINCOLOR_KETCHUP;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
static void K_SpawnDriftSparks(player_t *player)
|
static void K_SpawnDriftSparks(player_t *player)
|
||||||
{
|
{
|
||||||
|
INT32 ds = K_GetKartDriftSparkValue(player);
|
||||||
fixed_t newx;
|
fixed_t newx;
|
||||||
fixed_t newy;
|
fixed_t newy;
|
||||||
mobj_t *spark;
|
mobj_t *spark;
|
||||||
|
|
@ -3148,11 +3202,8 @@ static void K_SpawnDriftSparks(player_t *player)
|
||||||
if (leveltime % 2 == 1)
|
if (leveltime % 2 == 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!P_IsObjectOnGround(player->mo))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!player->kartstuff[k_drift]
|
if (!player->kartstuff[k_drift]
|
||||||
|| (player->kartstuff[k_driftcharge] < K_GetKartDriftSparkValue(player) && !(player->kartstuff[k_driftcharge] < 0)))
|
|| (player->kartstuff[k_driftcharge] < ds && !(player->kartstuff[k_driftcharge] < 0)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
travelangle = player->mo->angle-(ANGLE_45/5)*player->kartstuff[k_drift];
|
travelangle = player->mo->angle-(ANGLE_45/5)*player->kartstuff[k_drift];
|
||||||
|
|
@ -3175,62 +3226,51 @@ static void K_SpawnDriftSparks(player_t *player)
|
||||||
spark->momy = player->mo->momy/2;
|
spark->momy = player->mo->momy/2;
|
||||||
//spark->momz = player->mo->momz/2;
|
//spark->momz = player->mo->momz/2;
|
||||||
|
|
||||||
|
spark->color = K_DriftSparkColor(player, player->kartstuff[k_driftcharge]);
|
||||||
|
|
||||||
if (player->kartstuff[k_driftcharge] < 0)
|
if (player->kartstuff[k_driftcharge] < 0)
|
||||||
{
|
{
|
||||||
// Stage 0: Yellow
|
// Stage 0: Yellow
|
||||||
spark->color = SKINCOLOR_GOLD;
|
|
||||||
size = 0;
|
size = 0;
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*4)
|
else if (player->kartstuff[k_driftcharge] >= ds*4)
|
||||||
{
|
{
|
||||||
// Stage 3: Rainbow
|
// Stage 3: Rainbow
|
||||||
size = 2;
|
size = 2;
|
||||||
trail = 2;
|
trail = 2;
|
||||||
|
|
||||||
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player)*4)+(32*3))
|
if (player->kartstuff[k_driftcharge] <= (ds*4)+(32*3))
|
||||||
{
|
{
|
||||||
// transition
|
// transition
|
||||||
spark->color = SKINCOLOR_SILVER;
|
|
||||||
P_SetScale(spark, (spark->destscale = spark->scale*3/2));
|
P_SetScale(spark, (spark->destscale = spark->scale*3/2));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spark->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
|
||||||
spark->colorized = true;
|
spark->colorized = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*2)
|
else if (player->kartstuff[k_driftcharge] >= ds*2)
|
||||||
{
|
{
|
||||||
// Stage 2: Blue
|
// Stage 2: Blue
|
||||||
size = 2;
|
size = 2;
|
||||||
trail = 1;
|
trail = 1;
|
||||||
|
|
||||||
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player)*2)+(32*3))
|
if (player->kartstuff[k_driftcharge] <= (ds*2)+(32*3))
|
||||||
{
|
{
|
||||||
// transition
|
// transition
|
||||||
spark->color = SKINCOLOR_PURPLE;
|
|
||||||
P_SetScale(spark, (spark->destscale = spark->scale*3/2));
|
P_SetScale(spark, (spark->destscale = spark->scale*3/2));
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
spark->color = SKINCOLOR_SAPPHIRE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Stage 1: Red
|
// Stage 1: Red
|
||||||
size = 1;
|
size = 1;
|
||||||
|
|
||||||
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player))+(32*3))
|
if (player->kartstuff[k_driftcharge] <= (ds)+(32*3))
|
||||||
{
|
{
|
||||||
// transition
|
// transition
|
||||||
spark->color = SKINCOLOR_RASPBERRY;
|
|
||||||
P_SetScale(spark, (spark->destscale = spark->scale*2));
|
P_SetScale(spark, (spark->destscale = spark->scale*2));
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
spark->color = SKINCOLOR_KETCHUP;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn > 0) // Inward drifts
|
if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn > 0) // Inward drifts
|
||||||
|
|
@ -3550,7 +3590,7 @@ void K_DriftDustHandling(mobj_t *spawner)
|
||||||
{
|
{
|
||||||
angle_t playerangle = spawner->angle;
|
angle_t playerangle = spawner->angle;
|
||||||
|
|
||||||
if (spawner->player->speed < 5<<FRACBITS)
|
if (spawner->player->speed < 5*spawner->scale)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (spawner->player->cmd.forwardmove < 0)
|
if (spawner->player->cmd.forwardmove < 0)
|
||||||
|
|
@ -3561,7 +3601,7 @@ void K_DriftDustHandling(mobj_t *spawner)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (P_AproxDistance(spawner->momx, spawner->momy) < 5<<FRACBITS)
|
if (P_AproxDistance(spawner->momx, spawner->momy) < 5*spawner->scale)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
anglediff = abs((signed)(spawner->angle - R_PointToAngle2(0, 0, spawner->momx, spawner->momy)));
|
anglediff = abs((signed)(spawner->angle - R_PointToAngle2(0, 0, spawner->momx, spawner->momy)));
|
||||||
|
|
@ -3572,12 +3612,12 @@ void K_DriftDustHandling(mobj_t *spawner)
|
||||||
|
|
||||||
if (anglediff > ANG10*4) // Trying to turn further than 40 degrees
|
if (anglediff > ANG10*4) // Trying to turn further than 40 degrees
|
||||||
{
|
{
|
||||||
fixed_t spawnx = P_RandomRange(-spawnrange, spawnrange)<<FRACBITS;
|
fixed_t spawnx = P_RandomRange(-spawnrange, spawnrange) * spawner->scale;
|
||||||
fixed_t spawny = P_RandomRange(-spawnrange, spawnrange)<<FRACBITS;
|
fixed_t spawny = P_RandomRange(-spawnrange, spawnrange) * spawner->scale;
|
||||||
INT32 speedrange = 2;
|
INT32 speedrange = 2;
|
||||||
mobj_t *dust = P_SpawnMobj(spawner->x + spawnx, spawner->y + spawny, spawner->z, MT_DRIFTDUST);
|
mobj_t *dust = P_SpawnMobj(spawner->x + spawnx, spawner->y + spawny, spawner->z, MT_DRIFTDUST);
|
||||||
dust->momx = FixedMul(spawner->momx + (P_RandomRange(-speedrange, speedrange)<<FRACBITS), 3*(spawner->scale)/4);
|
dust->momx = FixedMul(spawner->momx + (P_RandomRange(-speedrange, speedrange) * spawner->scale), 3*(spawner->scale)/4);
|
||||||
dust->momy = FixedMul(spawner->momy + (P_RandomRange(-speedrange, speedrange)<<FRACBITS), 3*(spawner->scale)/4);
|
dust->momy = FixedMul(spawner->momy + (P_RandomRange(-speedrange, speedrange) * spawner->scale), 3*(spawner->scale)/4);
|
||||||
dust->momz = P_MobjFlip(spawner) * (P_RandomRange(1, 4) * (spawner->scale));
|
dust->momz = P_MobjFlip(spawner) * (P_RandomRange(1, 4) * (spawner->scale));
|
||||||
P_SetScale(dust, spawner->scale/2);
|
P_SetScale(dust, spawner->scale/2);
|
||||||
dust->destscale = spawner->scale * 3;
|
dust->destscale = spawner->scale * 3;
|
||||||
|
|
@ -3587,6 +3627,35 @@ void K_DriftDustHandling(mobj_t *spawner)
|
||||||
S_StartSound(spawner, sfx_screec);
|
S_StartSound(spawner, sfx_screec);
|
||||||
|
|
||||||
K_MatchGenericExtraFlags(dust, spawner);
|
K_MatchGenericExtraFlags(dust, spawner);
|
||||||
|
|
||||||
|
// Sparkle-y warning for when you're about to change drift sparks!
|
||||||
|
if (spawner->player && spawner->player->kartstuff[k_drift])
|
||||||
|
{
|
||||||
|
INT32 driftval = K_GetKartDriftSparkValue(spawner->player);
|
||||||
|
INT32 warntime = driftval/3;
|
||||||
|
INT32 dc = spawner->player->kartstuff[k_driftcharge];
|
||||||
|
UINT8 c = SKINCOLOR_NONE;
|
||||||
|
boolean rainbow = false;
|
||||||
|
|
||||||
|
if (dc >= 0)
|
||||||
|
{
|
||||||
|
dc += warntime;
|
||||||
|
}
|
||||||
|
|
||||||
|
c = K_DriftSparkColor(spawner->player, dc);
|
||||||
|
|
||||||
|
if (dc > (4*driftval)+(32*3))
|
||||||
|
{
|
||||||
|
rainbow = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (c != SKINCOLOR_NONE)
|
||||||
|
{
|
||||||
|
P_SetMobjState(dust, S_DRIFTWARNSPARK1);
|
||||||
|
dust->color = c;
|
||||||
|
dust->colorized = rainbow;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5788,6 +5857,10 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
if (player->kartstuff[k_driftcharge] < 0 || player->kartstuff[k_driftcharge] >= dsone)
|
if (player->kartstuff[k_driftcharge] < 0 || player->kartstuff[k_driftcharge] >= dsone)
|
||||||
{
|
{
|
||||||
angle_t pushdir = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
angle_t pushdir = R_PointToAngle2(0, 0, player->mo->momx, player->mo->momy);
|
||||||
|
//mobj_t *overlay = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_DRIFTEXPLODE);
|
||||||
|
//P_SetTarget(&overlay->target, player->mo);
|
||||||
|
//P_SetScale(overlay, (overlay->destscale = player->mo->scale));
|
||||||
|
//K_FlipFromObject(overlay, player->mo);
|
||||||
|
|
||||||
S_StartSound(player->mo, sfx_s23c);
|
S_StartSound(player->mo, sfx_s23c);
|
||||||
//K_SpawnDashDustRelease(player);
|
//K_SpawnDashDustRelease(player);
|
||||||
|
|
@ -5800,6 +5873,9 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
|
|
||||||
if (player->kartstuff[k_driftboost] < 15)
|
if (player->kartstuff[k_driftboost] < 15)
|
||||||
player->kartstuff[k_driftboost] = 15;
|
player->kartstuff[k_driftboost] = 15;
|
||||||
|
|
||||||
|
//overlay->color = SKINCOLOR_GOLD;
|
||||||
|
//overlay->fuse = 8;
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_driftcharge] >= dsone && player->kartstuff[k_driftcharge] < dstwo)
|
else if (player->kartstuff[k_driftcharge] >= dsone && player->kartstuff[k_driftcharge] < dstwo)
|
||||||
{
|
{
|
||||||
|
|
@ -5809,6 +5885,9 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
|
|
||||||
if (player->kartstuff[k_driftboost] < 20)
|
if (player->kartstuff[k_driftboost] < 20)
|
||||||
player->kartstuff[k_driftboost] = 20;
|
player->kartstuff[k_driftboost] = 20;
|
||||||
|
|
||||||
|
//overlay->color = SKINCOLOR_KETCHUP;
|
||||||
|
//overlay->fuse = 16;
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_driftcharge] < dsthree)
|
else if (player->kartstuff[k_driftcharge] < dsthree)
|
||||||
{
|
{
|
||||||
|
|
@ -5818,6 +5897,9 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
|
|
||||||
if (player->kartstuff[k_driftboost] < 50)
|
if (player->kartstuff[k_driftboost] < 50)
|
||||||
player->kartstuff[k_driftboost] = 50;
|
player->kartstuff[k_driftboost] = 50;
|
||||||
|
|
||||||
|
//overlay->color = SKINCOLOR_SAPPHIRE;
|
||||||
|
//overlay->fuse = 32;
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_driftcharge] >= dsthree)
|
else if (player->kartstuff[k_driftcharge] >= dsthree)
|
||||||
{
|
{
|
||||||
|
|
@ -5827,6 +5909,9 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
|
|
||||||
if (player->kartstuff[k_driftboost] < 125)
|
if (player->kartstuff[k_driftboost] < 125)
|
||||||
player->kartstuff[k_driftboost] = 125;
|
player->kartstuff[k_driftboost] = 125;
|
||||||
|
|
||||||
|
//overlay->color = SKINCOLOR_SILVER;
|
||||||
|
//overlay->fuse = 120;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -5873,11 +5958,14 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
player->kartstuff[k_aizdriftstrat] = player->kartstuff[k_brakedrift] = 0;
|
player->kartstuff[k_aizdriftstrat] = player->kartstuff[k_brakedrift] = 0;
|
||||||
player->kartstuff[k_getsparks] = 0;
|
player->kartstuff[k_getsparks] = 0;
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_jmp] == 1 && onground && player->kartstuff[k_drift] != 0)
|
else if (player->kartstuff[k_jmp] == 1 && player->kartstuff[k_drift] != 0)
|
||||||
{
|
{
|
||||||
// Incease/decrease the drift value to continue drifting in that direction
|
// Incease/decrease the drift value to continue drifting in that direction
|
||||||
fixed_t driftadditive = 24;
|
fixed_t driftadditive = 24;
|
||||||
|
boolean playsound = false;
|
||||||
|
|
||||||
|
if (onground)
|
||||||
|
{
|
||||||
if (player->kartstuff[k_drift] >= 1) // Drifting to the left
|
if (player->kartstuff[k_drift] >= 1) // Drifting to the left
|
||||||
{
|
{
|
||||||
player->kartstuff[k_drift]++;
|
player->kartstuff[k_drift]++;
|
||||||
|
|
@ -5915,30 +6003,49 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
player->kartstuff[k_getsparks] = 1;
|
player->kartstuff[k_getsparks] = 1;
|
||||||
|
|
||||||
if (player->kartstuff[k_driftcharge] <= -1)
|
if (player->kartstuff[k_driftcharge] <= -1)
|
||||||
|
{
|
||||||
player->kartstuff[k_driftcharge] = dsone; // Back to red
|
player->kartstuff[k_driftcharge] = dsone; // Back to red
|
||||||
|
playsound = true;
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
|
else if (player->speed <= minspeed)
|
||||||
{
|
{
|
||||||
player->kartstuff[k_getsparks] = 0;
|
player->kartstuff[k_getsparks] = 0;
|
||||||
driftadditive = 0;
|
driftadditive = 0;
|
||||||
|
|
||||||
if (player->kartstuff[k_driftcharge] >= dsone)
|
if (player->kartstuff[k_driftcharge] >= dsone)
|
||||||
|
{
|
||||||
player->kartstuff[k_driftcharge] = -1; // Set yellow sparks
|
player->kartstuff[k_driftcharge] = -1; // Set yellow sparks
|
||||||
|
playsound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
driftadditive = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This spawns the drift sparks
|
// This spawns the drift sparks
|
||||||
if ((player->kartstuff[k_driftcharge] + driftadditive >= dsone)
|
if ((player->kartstuff[k_driftcharge] + driftadditive >= dsone)
|
||||||
|| (player->kartstuff[k_driftcharge] < 0))
|
|| (player->kartstuff[k_driftcharge] < 0))
|
||||||
|
{
|
||||||
K_SpawnDriftSparks(player);
|
K_SpawnDriftSparks(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((player->kartstuff[k_driftcharge] < dsone && player->kartstuff[k_driftcharge]+driftadditive >= dsone)
|
||||||
|
|| (player->kartstuff[k_driftcharge] < dstwo && player->kartstuff[k_driftcharge]+driftadditive >= dstwo)
|
||||||
|
|| (player->kartstuff[k_driftcharge] < dsthree && player->kartstuff[k_driftcharge]+driftadditive >= dsthree))
|
||||||
|
{
|
||||||
|
playsound = true;
|
||||||
|
}
|
||||||
|
|
||||||
// Sound whenever you get a different tier of sparks
|
// Sound whenever you get a different tier of sparks
|
||||||
if (P_IsDisplayPlayer(player) // UGHGHGH...
|
if (playsound && P_IsDisplayPlayer(player))
|
||||||
&& ((player->kartstuff[k_driftcharge] < dsone && player->kartstuff[k_driftcharge]+driftadditive >= dsone)
|
|
||||||
|| (player->kartstuff[k_driftcharge] < dstwo && player->kartstuff[k_driftcharge]+driftadditive >= dstwo)
|
|
||||||
|| (player->kartstuff[k_driftcharge] < dsthree && player->kartstuff[k_driftcharge]+driftadditive >= dsthree)))
|
|
||||||
{
|
{
|
||||||
//S_StartSound(player->mo, sfx_s3ka2);
|
if (player->kartstuff[k_driftcharge] == -1)
|
||||||
S_StartSoundAtVolume(player->mo, sfx_s3ka2, 192); // Ugh...
|
S_StartSoundAtVolume(player->mo, sfx_sploss, 192); // Yellow spark sound
|
||||||
|
else
|
||||||
|
S_StartSoundAtVolume(player->mo, sfx_s3ka2, 192);
|
||||||
}
|
}
|
||||||
|
|
||||||
player->kartstuff[k_driftcharge] += driftadditive;
|
player->kartstuff[k_driftcharge] += driftadditive;
|
||||||
|
|
@ -9725,12 +9832,7 @@ static void K_drawKartFirstPerson(void)
|
||||||
|
|
||||||
if (stplyr->mo)
|
if (stplyr->mo)
|
||||||
{
|
{
|
||||||
INT32 dsone = K_GetKartDriftSparkValue(stplyr);
|
UINT8 driftcolor = K_DriftSparkColor(stplyr, stplyr->kartstuff[k_driftcharge]);
|
||||||
INT32 dstwo = dsone*2;
|
|
||||||
INT32 dsthree = dstwo*2;
|
|
||||||
|
|
||||||
#ifndef DONTLIKETOASTERSFPTWEAKS
|
|
||||||
{
|
|
||||||
const angle_t ang = R_PointToAngle2(0, 0, stplyr->rmomx, stplyr->rmomy) - stplyr->frameangle;
|
const angle_t ang = R_PointToAngle2(0, 0, stplyr->rmomx, stplyr->rmomy) - stplyr->frameangle;
|
||||||
// yes, the following is correct. no, you do not need to swap the x and y.
|
// yes, the following is correct. no, you do not need to swap the x and y.
|
||||||
fixed_t xoffs = -P_ReturnThrustY(stplyr->mo, ang, (BASEVIDWIDTH<<(FRACBITS-2))/2);
|
fixed_t xoffs = -P_ReturnThrustY(stplyr->mo, ang, (BASEVIDWIDTH<<(FRACBITS-2))/2);
|
||||||
|
|
@ -9763,19 +9865,11 @@ static void K_drawKartFirstPerson(void)
|
||||||
x += xoffs;
|
x += xoffs;
|
||||||
if (!splitscreen)
|
if (!splitscreen)
|
||||||
y += yoffs;
|
y += yoffs;
|
||||||
}
|
|
||||||
|
|
||||||
// drift sparks!
|
|
||||||
if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dsthree))
|
if ((leveltime & 1) && (driftcolor != SKINCOLOR_NONE)) // drift sparks!
|
||||||
colmap = R_GetTranslationColormap(TC_RAINBOW, (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1))), GTC_CACHE);
|
colmap = R_GetTranslationColormap(TC_RAINBOW, driftcolor, GTC_CACHE);
|
||||||
else if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dstwo))
|
else if (stplyr->mo->colorized && stplyr->mo->color) // invincibility/grow/shrink!
|
||||||
colmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_KETCHUP, GTC_CACHE);
|
|
||||||
else if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dsone))
|
|
||||||
colmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_SAPPHIRE, GTC_CACHE);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
// invincibility/grow/shrink!
|
|
||||||
if (stplyr->mo->colorized && stplyr->mo->color)
|
|
||||||
colmap = R_GetTranslationColormap(TC_RAINBOW, stplyr->mo->color, GTC_CACHE);
|
colmap = R_GetTranslationColormap(TC_RAINBOW, stplyr->mo->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ void K_ExplodePlayer(player_t *player, mobj_t *source, mobj_t *inflictor);
|
||||||
void K_StealBumper(player_t *player, player_t *victim, boolean force);
|
void K_StealBumper(player_t *player, player_t *victim, boolean force);
|
||||||
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source);
|
void K_SpawnKartExplosion(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle, boolean spawncenter, boolean ghostit, mobj_t *source);
|
||||||
void K_SpawnMineExplosion(mobj_t *source, UINT8 color);
|
void K_SpawnMineExplosion(mobj_t *source, UINT8 color);
|
||||||
|
UINT8 K_DriftSparkColor(player_t *player, INT32 charge);
|
||||||
void K_SpawnBoostTrail(player_t *player);
|
void K_SpawnBoostTrail(player_t *player);
|
||||||
void K_SpawnSparkleTrail(mobj_t *mo);
|
void K_SpawnSparkleTrail(mobj_t *mo);
|
||||||
void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent);
|
void K_SpawnWipeoutTrail(mobj_t *mo, boolean translucent);
|
||||||
|
|
|
||||||
42
src/p_mobj.c
42
src/p_mobj.c
|
|
@ -8289,6 +8289,37 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
S_StartSound(mobj, sfx_s3k4e);
|
S_StartSound(mobj, sfx_s3k4e);
|
||||||
mobj->health--;
|
mobj->health--;
|
||||||
break;
|
break;
|
||||||
|
case MT_DRIFTEXPLODE:
|
||||||
|
if (!mobj->target || !mobj->target->health)
|
||||||
|
{
|
||||||
|
P_RemoveMobj(mobj);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mobj->angle = mobj->target->angle;
|
||||||
|
P_TeleportMove(mobj, mobj->target->x + P_ReturnThrustX(mobj, mobj->angle+ANGLE_180, mobj->target->radius),
|
||||||
|
mobj->target->y + P_ReturnThrustY(mobj, mobj->angle+ANGLE_180, mobj->target->radius), mobj->target->z);
|
||||||
|
P_SetScale(mobj, mobj->target->scale);
|
||||||
|
mobj->flags2 ^= MF2_DONTDRAW;
|
||||||
|
#ifdef HWRENDER
|
||||||
|
mobj->modeltilt = mobj->target->modeltilt;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
{
|
||||||
|
player_t *p = NULL;
|
||||||
|
if (mobj->target->target && mobj->target->target->player)
|
||||||
|
p = mobj->target->target->player;
|
||||||
|
else if (mobj->target->player)
|
||||||
|
p = mobj->target->player;
|
||||||
|
|
||||||
|
if (p)
|
||||||
|
{
|
||||||
|
if (p->kartstuff[k_driftboost] > mobj->movecount)
|
||||||
|
; // reset animation
|
||||||
|
mobj->movecount = p->kartstuff[k_driftboost];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case MT_BOOSTFLAME:
|
case MT_BOOSTFLAME:
|
||||||
if (!mobj->target || !mobj->target->health)
|
if (!mobj->target || !mobj->target->health)
|
||||||
{
|
{
|
||||||
|
|
@ -8363,6 +8394,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
UINT8 driftcolor = K_DriftSparkColor(mobj->target->player, mobj->target->player->kartstuff[k_driftcharge]);
|
||||||
fixed_t newx, newy;
|
fixed_t newx, newy;
|
||||||
angle_t travelangle;
|
angle_t travelangle;
|
||||||
|
|
||||||
|
|
@ -8375,14 +8407,8 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
mobj->angle = travelangle - ((ANGLE_90/5)*mobj->target->player->kartstuff[k_drift]);
|
mobj->angle = travelangle - ((ANGLE_90/5)*mobj->target->player->kartstuff[k_drift]);
|
||||||
P_SetScale(mobj, (mobj->destscale = mobj->target->scale));
|
P_SetScale(mobj, (mobj->destscale = mobj->target->scale));
|
||||||
|
|
||||||
if (mobj->target->player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(mobj->target->player)*4)
|
if (driftcolor != SKINCOLOR_NONE)
|
||||||
mobj->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
mobj->color = driftcolor;
|
||||||
else if (mobj->target->player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(mobj->target->player)*2)
|
|
||||||
mobj->color = SKINCOLOR_SAPPHIRE;
|
|
||||||
else if (mobj->target->player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(mobj->target->player))
|
|
||||||
mobj->color = SKINCOLOR_KETCHUP;
|
|
||||||
else if (mobj->target->player->kartstuff[k_driftcharge] < 0)
|
|
||||||
mobj->color = SKINCOLOR_GOLD;
|
|
||||||
else
|
else
|
||||||
mobj->color = SKINCOLOR_SILVER;
|
mobj->color = SKINCOLOR_SILVER;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7498,7 +7498,14 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
if (player->kartstuff[k_drift] != 0)
|
if (player->kartstuff[k_drift] != 0)
|
||||||
{
|
{
|
||||||
fixed_t panmax = (dist/5);
|
fixed_t panmax = (dist/5);
|
||||||
pan = FixedDiv(FixedMul(min((fixed_t)player->kartstuff[k_driftcharge], K_GetKartDriftSparkValue(player)), panmax), K_GetKartDriftSparkValue(player));
|
INT32 driftval = K_GetKartDriftSparkValue(player);
|
||||||
|
INT32 dc = player->kartstuff[k_driftcharge];
|
||||||
|
|
||||||
|
if (dc > driftval || dc < 0)
|
||||||
|
dc = driftval;
|
||||||
|
|
||||||
|
pan = FixedDiv(FixedMul((fixed_t)dc, panmax), driftval);
|
||||||
|
|
||||||
if (pan > panmax)
|
if (pan > panmax)
|
||||||
pan = panmax;
|
pan = panmax;
|
||||||
if (player->kartstuff[k_drift] < 0)
|
if (player->kartstuff[k_drift] < 0)
|
||||||
|
|
|
||||||
|
|
@ -817,6 +817,7 @@ sfxinfo_t S_sfx[NUMSFX] =
|
||||||
{"toada", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Arid Sands Toad scream
|
{"toada", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Arid Sands Toad scream
|
||||||
{"bhurry", false, 255, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // v1.0.2 Battle overtime
|
{"bhurry", false, 255, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // v1.0.2 Battle overtime
|
||||||
{"bsnipe", false, 96, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // Banana sniping
|
{"bsnipe", false, 96, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // Banana sniping
|
||||||
|
{"sploss", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // Down to yellow sparks
|
||||||
{"itfree", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // :shitsfree:
|
{"itfree", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR}, // :shitsfree:
|
||||||
{"dbgsal", false, 255, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // Debug notification
|
{"dbgsal", false, 255, 8, -1, NULL, 0, -1, -1, LUMPERROR}, // Debug notification
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -892,6 +892,7 @@ typedef enum
|
||||||
sfx_toada,
|
sfx_toada,
|
||||||
sfx_bhurry,
|
sfx_bhurry,
|
||||||
sfx_bsnipe,
|
sfx_bsnipe,
|
||||||
|
sfx_sploss,
|
||||||
sfx_itfree,
|
sfx_itfree,
|
||||||
sfx_dbgsal,
|
sfx_dbgsal,
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue