mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-05-08 09:51:45 +00:00
Merge branch 'master' of git@git.magicalgirl.moe:KartKrew/Kart.git into waypoints
# Conflicts: # src/k_kart.c
This commit is contained in:
commit
da2f1fc972
22 changed files with 591 additions and 252 deletions
|
|
@ -525,7 +525,7 @@ static void D_Display(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (demo.rewinding)
|
if (demo.rewinding)
|
||||||
V_DrawFadeScreen(TC_RAINBOW, (leveltime & 0x20) ? SKINCOLOR_PASTEL : SKINCOLOR_MOONSLAM);
|
V_DrawFadeScreen(TC_RAINBOW, (leveltime & 0x20) ? SKINCOLOR_PASTEL : SKINCOLOR_MOONSET);
|
||||||
|
|
||||||
// vid size change is now finished if it was on...
|
// vid size change is now finished if it was on...
|
||||||
vid.recalc = 0;
|
vid.recalc = 0;
|
||||||
|
|
|
||||||
|
|
@ -460,6 +460,8 @@ consvar_t cv_pingtimeout = {"pingtimeout", "10", CV_SAVE, pingtimeout_cons_t, NU
|
||||||
static CV_PossibleValue_t showping_cons_t[] = {{0, "Off"}, {1, "Always"}, {2, "Warning"}, {0, NULL}};
|
static CV_PossibleValue_t showping_cons_t[] = {{0, "Off"}, {1, "Always"}, {2, "Warning"}, {0, NULL}};
|
||||||
consvar_t cv_showping = {"showping", "Always", CV_SAVE, showping_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_showping = {"showping", "Always", CV_SAVE, showping_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
||||||
|
consvar_t cv_showviewpointtext = {"showviewpointtext", "On", CV_SAVE, CV_OnOff, 0, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
||||||
// Intermission time Tails 04-19-2002
|
// Intermission time Tails 04-19-2002
|
||||||
static CV_PossibleValue_t inttime_cons_t[] = {{0, "MIN"}, {3600, "MAX"}, {0, NULL}};
|
static CV_PossibleValue_t inttime_cons_t[] = {{0, "MIN"}, {3600, "MAX"}, {0, NULL}};
|
||||||
consvar_t cv_inttime = {"inttime", "20", CV_NETVAR, inttime_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_inttime = {"inttime", "20", CV_NETVAR, inttime_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
@ -720,6 +722,7 @@ void D_RegisterServerCommands(void)
|
||||||
CV_RegisterVar(&cv_lagless);
|
CV_RegisterVar(&cv_lagless);
|
||||||
CV_RegisterVar(&cv_pingtimeout);
|
CV_RegisterVar(&cv_pingtimeout);
|
||||||
CV_RegisterVar(&cv_showping);
|
CV_RegisterVar(&cv_showping);
|
||||||
|
CV_RegisterVar(&cv_showviewpointtext);
|
||||||
|
|
||||||
#ifdef SEENAMES
|
#ifdef SEENAMES
|
||||||
CV_RegisterVar(&cv_allowseenames);
|
CV_RegisterVar(&cv_allowseenames);
|
||||||
|
|
|
||||||
|
|
@ -148,6 +148,7 @@ extern consvar_t cv_maxping;
|
||||||
extern consvar_t cv_lagless;
|
extern consvar_t cv_lagless;
|
||||||
extern consvar_t cv_pingtimeout;
|
extern consvar_t cv_pingtimeout;
|
||||||
extern consvar_t cv_showping;
|
extern consvar_t cv_showping;
|
||||||
|
extern consvar_t cv_showviewpointtext;
|
||||||
|
|
||||||
extern consvar_t cv_skipmapcheck;
|
extern consvar_t cv_skipmapcheck;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6347,6 +6347,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
||||||
"S_DRIFTSPARK_B1",
|
"S_DRIFTSPARK_B1",
|
||||||
"S_DRIFTSPARK_C1",
|
"S_DRIFTSPARK_C1",
|
||||||
"S_DRIFTSPARK_C2",
|
"S_DRIFTSPARK_C2",
|
||||||
|
"S_DRIFTSPARK_D1",
|
||||||
|
"S_DRIFTSPARK_D2",
|
||||||
|
|
||||||
// Brake drift sparks
|
// Brake drift sparks
|
||||||
"S_BRAKEDRIFT",
|
"S_BRAKEDRIFT",
|
||||||
|
|
@ -6357,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",
|
||||||
|
|
@ -6373,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",
|
||||||
|
|
@ -7739,6 +7751,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",
|
||||||
|
|
@ -8231,7 +8244,7 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart.
|
||||||
"SCARLET", // SKINCOLOR_SCARLET
|
"SCARLET", // SKINCOLOR_SCARLET
|
||||||
"KETCHUP", // SKINCOLOR_KETCHUP
|
"KETCHUP", // SKINCOLOR_KETCHUP
|
||||||
"DAWN", // SKINCOLOR_DAWN
|
"DAWN", // SKINCOLOR_DAWN
|
||||||
"SUNSET", // SKINCOLOR_SUNSET
|
"SUNSLAM", // SKINCOLOR_SUNSLAM
|
||||||
"CREAMSICLE", // SKINCOLOR_CREAMSICLE
|
"CREAMSICLE", // SKINCOLOR_CREAMSICLE
|
||||||
"ORANGE", // SKINCOLOR_ORANGE
|
"ORANGE", // SKINCOLOR_ORANGE
|
||||||
"ROSEWOOD", // SKINCOLOR_ROSEWOOD
|
"ROSEWOOD", // SKINCOLOR_ROSEWOOD
|
||||||
|
|
@ -8291,9 +8304,9 @@ static const char *COLOR_ENUMS[] = { // Rejigged for Kart.
|
||||||
"THISTLE", // SKINCOLOR_THISTLE
|
"THISTLE", // SKINCOLOR_THISTLE
|
||||||
"PURPLE", // SKINCOLOR_PURPLE
|
"PURPLE", // SKINCOLOR_PURPLE
|
||||||
"PASTEL", // SKINCOLOR_PASTEL
|
"PASTEL", // SKINCOLOR_PASTEL
|
||||||
"MOONSLAM", // SKINCOLOR_MOONSLAM
|
"MOONSET", // SKINCOLOR_MOONSET
|
||||||
"DUSK", // SKINCOLOR_DUSK
|
"DUSK", // SKINCOLOR_DUSK
|
||||||
"BUBBLEGUM", // SKINCOLOR_BUBBLEGUM
|
"VIOLET", // SKINCOLOR_VIOLET
|
||||||
"MAGENTA", // SKINCOLOR_MAGENTA
|
"MAGENTA", // SKINCOLOR_MAGENTA
|
||||||
"FUCHSIA", // SKINCOLOR_FUCHSIA
|
"FUCHSIA", // SKINCOLOR_FUCHSIA
|
||||||
"TOXIC", // SKINCOLOR_TOXIC
|
"TOXIC", // SKINCOLOR_TOXIC
|
||||||
|
|
|
||||||
|
|
@ -280,7 +280,7 @@ typedef enum
|
||||||
SKINCOLOR_SCARLET,
|
SKINCOLOR_SCARLET,
|
||||||
SKINCOLOR_KETCHUP,
|
SKINCOLOR_KETCHUP,
|
||||||
SKINCOLOR_DAWN,
|
SKINCOLOR_DAWN,
|
||||||
SKINCOLOR_SUNSET,
|
SKINCOLOR_SUNSLAM,
|
||||||
SKINCOLOR_CREAMSICLE,
|
SKINCOLOR_CREAMSICLE,
|
||||||
SKINCOLOR_ORANGE,
|
SKINCOLOR_ORANGE,
|
||||||
SKINCOLOR_ROSEWOOD,
|
SKINCOLOR_ROSEWOOD,
|
||||||
|
|
@ -340,9 +340,9 @@ typedef enum
|
||||||
SKINCOLOR_THISTLE,
|
SKINCOLOR_THISTLE,
|
||||||
SKINCOLOR_PURPLE,
|
SKINCOLOR_PURPLE,
|
||||||
SKINCOLOR_PASTEL,
|
SKINCOLOR_PASTEL,
|
||||||
SKINCOLOR_MOONSLAM,
|
SKINCOLOR_MOONSET,
|
||||||
SKINCOLOR_DUSK,
|
SKINCOLOR_DUSK,
|
||||||
SKINCOLOR_BUBBLEGUM,
|
SKINCOLOR_VIOLET,
|
||||||
SKINCOLOR_MAGENTA,
|
SKINCOLOR_MAGENTA,
|
||||||
SKINCOLOR_FUCHSIA,
|
SKINCOLOR_FUCHSIA,
|
||||||
SKINCOLOR_TOXIC,
|
SKINCOLOR_TOXIC,
|
||||||
|
|
|
||||||
|
|
@ -6960,7 +6960,7 @@ void G_LoadDemoInfo(menudemo_t *pdemo)
|
||||||
(void)extrainfo_p;
|
(void)extrainfo_p;
|
||||||
sprintf(pdemo->winnername, "transrights420");
|
sprintf(pdemo->winnername, "transrights420");
|
||||||
pdemo->winnerskin = 1;
|
pdemo->winnerskin = 1;
|
||||||
pdemo->winnercolor = SKINCOLOR_MOONSLAM;
|
pdemo->winnercolor = SKINCOLOR_MOONSET;
|
||||||
pdemo->winnertime = 6666;*/
|
pdemo->winnertime = 6666;*/
|
||||||
|
|
||||||
// Read standings!
|
// Read standings!
|
||||||
|
|
|
||||||
|
|
@ -5357,7 +5357,7 @@ static void HWR_AddSprites(sector_t *sec)
|
||||||
|
|
||||||
// Handle all things in sector.
|
// Handle all things in sector.
|
||||||
// If a limit exists, handle things a tiny bit different.
|
// If a limit exists, handle things a tiny bit different.
|
||||||
if ((limit_dist = (fixed_t)(/*(maptol & TOL_NIGHTS) ? cv_drawdist_nights.value : */cv_drawdist.value) << FRACBITS))
|
if ((limit_dist = (fixed_t)(cv_drawdist.value) * mapobjectscale))
|
||||||
{
|
{
|
||||||
for (thing = sec->thinglist; thing; thing = thing->snext)
|
for (thing = sec->thinglist; thing; thing = thing->snext)
|
||||||
{
|
{
|
||||||
|
|
@ -5424,7 +5424,7 @@ static void HWR_AddSprites(sector_t *sec)
|
||||||
|
|
||||||
#ifdef HWPRECIP
|
#ifdef HWPRECIP
|
||||||
// No to infinite precipitation draw distance.
|
// No to infinite precipitation draw distance.
|
||||||
if ((limit_dist = (fixed_t)cv_drawdist_precip.value << FRACBITS))
|
if ((limit_dist = (fixed_t)(cv_drawdist_precip.value) * mapobjectscale))
|
||||||
{
|
{
|
||||||
for (precipthing = sec->preciplist; precipthing; precipthing = precipthing->snext)
|
for (precipthing = sec->preciplist; precipthing; precipthing = precipthing->snext)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -812,7 +812,6 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
|
||||||
case SKINCOLOR_PINK:
|
case SKINCOLOR_PINK:
|
||||||
case SKINCOLOR_ROSE:
|
case SKINCOLOR_ROSE:
|
||||||
case SKINCOLOR_LEMONADE:
|
case SKINCOLOR_LEMONADE:
|
||||||
case SKINCOLOR_BUBBLEGUM:
|
|
||||||
case SKINCOLOR_LILAC:
|
case SKINCOLOR_LILAC:
|
||||||
case SKINCOLOR_TAFFY:
|
case SKINCOLOR_TAFFY:
|
||||||
cstart = "\x8d"; // V_PINKMAP
|
cstart = "\x8d"; // V_PINKMAP
|
||||||
|
|
@ -828,7 +827,7 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
|
||||||
cstart = "\x85"; // V_REDMAP
|
cstart = "\x85"; // V_REDMAP
|
||||||
break;
|
break;
|
||||||
case SKINCOLOR_DAWN:
|
case SKINCOLOR_DAWN:
|
||||||
case SKINCOLOR_SUNSET:
|
case SKINCOLOR_SUNSLAM:
|
||||||
case SKINCOLOR_CREAMSICLE:
|
case SKINCOLOR_CREAMSICLE:
|
||||||
case SKINCOLOR_ORANGE:
|
case SKINCOLOR_ORANGE:
|
||||||
case SKINCOLOR_ROSEWOOD:
|
case SKINCOLOR_ROSEWOOD:
|
||||||
|
|
@ -906,7 +905,8 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
|
||||||
break;
|
break;
|
||||||
case SKINCOLOR_MAGENTA:
|
case SKINCOLOR_MAGENTA:
|
||||||
case SKINCOLOR_FUCHSIA:
|
case SKINCOLOR_FUCHSIA:
|
||||||
case SKINCOLOR_MOONSLAM:
|
case SKINCOLOR_MOONSET:
|
||||||
|
case SKINCOLOR_VIOLET:
|
||||||
cstart = "\x8c"; // V_MAGENTAMAP
|
cstart = "\x8c"; // V_MAGENTAMAP
|
||||||
break;
|
break;
|
||||||
case SKINCOLOR_DUSK:
|
case SKINCOLOR_DUSK:
|
||||||
|
|
|
||||||
60
src/info.c
60
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)
|
||||||
|
|
@ -1851,7 +1851,7 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_SPHG, 2, 4, {NULL}, 0, 0, S_GHORIZ1}, // S_GHORIZ4
|
{SPR_SPHG, 2, 4, {NULL}, 0, 0, S_GHORIZ1}, // S_GHORIZ4
|
||||||
|
|
||||||
// Rain
|
// Rain
|
||||||
{SPR_RAIN, FF_TRANS50, -1, {NULL}, 0, 0, S_NULL}, // S_RAIN1
|
{SPR_RAIN, 0, -1, {NULL}, 0, 0, S_NULL}, // S_RAIN1
|
||||||
{SPR_NULL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_RAINRETURN
|
{SPR_NULL, 0, -1, {NULL}, 0, 0, S_NULL}, // S_RAINRETURN
|
||||||
|
|
||||||
// Snowflake
|
// Snowflake
|
||||||
|
|
@ -1876,9 +1876,9 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_SPLH, FF_TRANS50|8, 2, {NULL}, 0, 0, S_NULL}, // S_SPLISH9
|
{SPR_SPLH, FF_TRANS50|8, 2, {NULL}, 0, 0, S_NULL}, // S_SPLISH9
|
||||||
|
|
||||||
// Water Splash
|
// Water Splash
|
||||||
{SPR_SPLA, FF_TRANS50 , 3, {NULL}, 0, 0, S_SPLASH2}, // S_SPLASH1
|
{SPR_SPLA, 0, 3, {NULL}, 0, 0, S_SPLASH2}, // S_SPLASH1
|
||||||
{SPR_SPLA, FF_TRANS70|1, 3, {NULL}, 0, 0, S_SPLASH3}, // S_SPLASH2
|
{SPR_SPLA, 1, 3, {NULL}, 0, 0, S_SPLASH3}, // S_SPLASH2
|
||||||
{SPR_SPLA, FF_TRANS90|2, 3, {NULL}, 0, 0, S_NULL}, // S_SPLASH3
|
{SPR_SPLA, 2, 3, {NULL}, 0, 0, S_NULL}, // S_SPLASH3
|
||||||
|
|
||||||
// Smoke
|
// Smoke
|
||||||
{SPR_SMOK, FF_TRANS50 , 4, {NULL}, 0, 0, S_SMOKE2}, // S_SMOKE1
|
{SPR_SMOK, FF_TRANS50 , 4, {NULL}, 0, 0, S_SMOKE2}, // S_SMOKE1
|
||||||
|
|
@ -2587,6 +2587,9 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_DRIF, FF_FULLBRIGHT, 2, {NULL}, 0, 0, S_DRIFTSPARK_C2}, // S_DRIFTSPARK_C1
|
{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_DRIF, FF_FULLBRIGHT|FF_TRANS20, 1, {NULL}, 0, 0, S_DRIFTSPARK_A3}, // S_DRIFTSPARK_C2 (Loop back to A3)
|
||||||
|
|
||||||
|
{SPR_DRIF, FF_FULLBRIGHT|3, 2, {NULL}, 0, 0, S_DRIFTSPARK_D2}, // S_DRIFTSPARK_D1
|
||||||
|
{SPR_DRIF, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_DRIFTSPARK_A2}, // S_DRIFTSPARK_D2 (Loop back to A2)
|
||||||
|
|
||||||
{SPR_BDRF, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 5, 2, S_BRAKEDRIFT}, // S_BRAKEDRIFT
|
{SPR_BDRF, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE, -1, {NULL}, 5, 2, S_BRAKEDRIFT}, // S_BRAKEDRIFT
|
||||||
|
|
||||||
{SPR_DUST, 0, 3, {NULL}, 0, 0, S_DRIFTDUST2}, // S_DRIFTDUST1
|
{SPR_DUST, 0, 3, {NULL}, 0, 0, S_DRIFTDUST2}, // S_DRIFTDUST1
|
||||||
|
|
@ -2594,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
|
||||||
|
|
@ -2608,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
|
||||||
|
|
||||||
|
|
@ -15215,6 +15228,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
|
||||||
|
|
@ -15987,7 +16027,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
S_BALLHOG_DEAD, // deathstate
|
S_BALLHOG_DEAD, // deathstate
|
||||||
S_NULL, // xdeathstate
|
S_NULL, // xdeathstate
|
||||||
sfx_hogbom, // deathsound
|
sfx_hogbom, // deathsound
|
||||||
64*FRACUNIT, // speed
|
80*FRACUNIT, // speed
|
||||||
16*FRACUNIT, // radius
|
16*FRACUNIT, // radius
|
||||||
32*FRACUNIT, // height
|
32*FRACUNIT, // height
|
||||||
0, // display offset
|
0, // display offset
|
||||||
|
|
|
||||||
18
src/info.h
18
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,
|
||||||
|
|
@ -3236,6 +3239,8 @@ typedef enum state
|
||||||
S_DRIFTSPARK_B1,
|
S_DRIFTSPARK_B1,
|
||||||
S_DRIFTSPARK_C1,
|
S_DRIFTSPARK_C1,
|
||||||
S_DRIFTSPARK_C2,
|
S_DRIFTSPARK_C2,
|
||||||
|
S_DRIFTSPARK_D1,
|
||||||
|
S_DRIFTSPARK_D2,
|
||||||
|
|
||||||
// Brake drift sparks
|
// Brake drift sparks
|
||||||
S_BRAKEDRIFT,
|
S_BRAKEDRIFT,
|
||||||
|
|
@ -3246,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,
|
||||||
|
|
@ -3262,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,
|
||||||
|
|
@ -4660,6 +4675,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,
|
||||||
|
|
|
||||||
517
src/k_kart.c
517
src/k_kart.c
|
|
@ -74,7 +74,7 @@ const char *KartColor_Names[MAXSKINCOLORS] =
|
||||||
"Scarlet", // SKINCOLOR_SCARLET
|
"Scarlet", // SKINCOLOR_SCARLET
|
||||||
"Ketchup", // SKINCOLOR_KETCHUP
|
"Ketchup", // SKINCOLOR_KETCHUP
|
||||||
"Dawn", // SKINCOLOR_DAWN
|
"Dawn", // SKINCOLOR_DAWN
|
||||||
"Sunset", // SKINCOLOR_SUNSET
|
"Sunslam", // SKINCOLOR_SUNSLAM
|
||||||
"Creamsicle", // SKINCOLOR_CREAMSICLE
|
"Creamsicle", // SKINCOLOR_CREAMSICLE
|
||||||
"Orange", // SKINCOLOR_ORANGE
|
"Orange", // SKINCOLOR_ORANGE
|
||||||
"Rosewood", // SKINCOLOR_ROSEWOOD
|
"Rosewood", // SKINCOLOR_ROSEWOOD
|
||||||
|
|
@ -134,9 +134,9 @@ const char *KartColor_Names[MAXSKINCOLORS] =
|
||||||
"Thistle", // SKINCOLOR_THISTLE
|
"Thistle", // SKINCOLOR_THISTLE
|
||||||
"Purple", // SKINCOLOR_PURPLE
|
"Purple", // SKINCOLOR_PURPLE
|
||||||
"Pastel", // SKINCOLOR_PASTEL
|
"Pastel", // SKINCOLOR_PASTEL
|
||||||
"Moonslam", // SKINCOLOR_MOONSLAM
|
"Moonset", // SKINCOLOR_MOONSET
|
||||||
"Dusk", // SKINCOLOR_DUSK
|
"Dusk", // SKINCOLOR_DUSK
|
||||||
"Bubblegum", // SKINCOLOR_BUBBLEGUM
|
"Violet", // SKINCOLOR_VIOLET
|
||||||
"Magenta", // SKINCOLOR_MAGENTA
|
"Magenta", // SKINCOLOR_MAGENTA
|
||||||
"Fuchsia", // SKINCOLOR_FUCHSIA
|
"Fuchsia", // SKINCOLOR_FUCHSIA
|
||||||
"Toxic", // SKINCOLOR_TOXIC
|
"Toxic", // SKINCOLOR_TOXIC
|
||||||
|
|
@ -180,7 +180,7 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] =
|
||||||
SKINCOLOR_ALGAE,10, // SKINCOLOR_SCARLET
|
SKINCOLOR_ALGAE,10, // SKINCOLOR_SCARLET
|
||||||
SKINCOLOR_MUSTARD,10, // SKINCOLOR_KETCHUP
|
SKINCOLOR_MUSTARD,10, // SKINCOLOR_KETCHUP
|
||||||
SKINCOLOR_DUSK,8, // SKINCOLOR_DAWN
|
SKINCOLOR_DUSK,8, // SKINCOLOR_DAWN
|
||||||
SKINCOLOR_MOONSLAM,8, // SKINCOLOR_SUNSET
|
SKINCOLOR_MOONSET,8, // SKINCOLOR_SUNSLAM
|
||||||
SKINCOLOR_PERIWINKLE,8, // SKINCOLOR_CREAMSICLE
|
SKINCOLOR_PERIWINKLE,8, // SKINCOLOR_CREAMSICLE
|
||||||
SKINCOLOR_BLUE,8, // SKINCOLOR_ORANGE
|
SKINCOLOR_BLUE,8, // SKINCOLOR_ORANGE
|
||||||
SKINCOLOR_BLUEBERRY,6, // SKINCOLOR_ROSEWOOD
|
SKINCOLOR_BLUEBERRY,6, // SKINCOLOR_ROSEWOOD
|
||||||
|
|
@ -195,7 +195,7 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] =
|
||||||
SKINCOLOR_KETCHUP,8, // SKINCOLOR_MUSTARD
|
SKINCOLOR_KETCHUP,8, // SKINCOLOR_MUSTARD
|
||||||
SKINCOLOR_EMERALD,8, // SKINCOLOR_BANANA
|
SKINCOLOR_EMERALD,8, // SKINCOLOR_BANANA
|
||||||
SKINCOLOR_TEAL,8, // SKINCOLOR_OLIVE
|
SKINCOLOR_TEAL,8, // SKINCOLOR_OLIVE
|
||||||
SKINCOLOR_BUBBLEGUM,8, // SKINCOLOR_CROCODILE
|
SKINCOLOR_VIOLET,8, // SKINCOLOR_CROCODILE
|
||||||
SKINCOLOR_NAVY,6, // SKINCOLOR_PERIDOT
|
SKINCOLOR_NAVY,6, // SKINCOLOR_PERIDOT
|
||||||
SKINCOLOR_ROBOHOOD,8, // SKINCOLOR_VOMIT
|
SKINCOLOR_ROBOHOOD,8, // SKINCOLOR_VOMIT
|
||||||
SKINCOLOR_LAVENDER,6, // SKINCOLOR_GARDEN
|
SKINCOLOR_LAVENDER,6, // SKINCOLOR_GARDEN
|
||||||
|
|
@ -240,9 +240,9 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] =
|
||||||
SKINCOLOR_AZURE,8, // SKINCOLOR_THISTLE
|
SKINCOLOR_AZURE,8, // SKINCOLOR_THISTLE
|
||||||
SKINCOLOR_CARIBBEAN,10, // SKINCOLOR_PURPLE
|
SKINCOLOR_CARIBBEAN,10, // SKINCOLOR_PURPLE
|
||||||
SKINCOLOR_FUCHSIA,11, // SKINCOLOR_PASTEL
|
SKINCOLOR_FUCHSIA,11, // SKINCOLOR_PASTEL
|
||||||
SKINCOLOR_SUNSET,10, // SKINCOLOR_MOONSLAM
|
SKINCOLOR_SUNSLAM,10, // SKINCOLOR_MOONSET
|
||||||
SKINCOLOR_DAWN,6, // SKINCOLOR_DUSK
|
SKINCOLOR_DAWN,6, // SKINCOLOR_DUSK
|
||||||
SKINCOLOR_CROCODILE,8, // SKINCOLOR_BUBBLEGUM
|
SKINCOLOR_CROCODILE,8, // SKINCOLOR_VIOLET
|
||||||
SKINCOLOR_TURTLE,8, // SKINCOLOR_MAGENTA
|
SKINCOLOR_TURTLE,8, // SKINCOLOR_MAGENTA
|
||||||
SKINCOLOR_PASTEL,11, // SKINCOLOR_FUCHSIA
|
SKINCOLOR_PASTEL,11, // SKINCOLOR_FUCHSIA
|
||||||
SKINCOLOR_MAROON,8, // SKINCOLOR_TOXIC
|
SKINCOLOR_MAROON,8, // SKINCOLOR_TOXIC
|
||||||
|
|
@ -261,7 +261,7 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = {
|
||||||
{ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_GREY
|
{ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_GREY
|
||||||
{ 3, 5, 8, 11, 15, 17, 19, 21, 23, 24, 25, 26, 27, 29, 30, 31}, // SKINCOLOR_NICKEL
|
{ 3, 5, 8, 11, 15, 17, 19, 21, 23, 24, 25, 26, 27, 29, 30, 31}, // SKINCOLOR_NICKEL
|
||||||
{ 4, 7, 11, 15, 20, 22, 24, 27, 28, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_BLACK
|
{ 4, 7, 11, 15, 20, 22, 24, 27, 28, 28, 28, 29, 29, 30, 30, 31}, // SKINCOLOR_BLACK
|
||||||
{ 0, 1, 208, 208, 209, 210, 10, 14, 16, 18, 20, 22, 24, 26, 28, 31}, // SKINCOLOR_FAIRY
|
{ 0, 0, 252, 252, 200, 201, 211, 14, 16, 18, 20, 22, 24, 26, 28, 31}, // SKINCOLOR_FAIRY
|
||||||
{ 0, 80, 80, 81, 82, 218, 240, 11, 13, 16, 18, 21, 23, 26, 28, 31}, // SKINCOLOR_POPCORN
|
{ 0, 80, 80, 81, 82, 218, 240, 11, 13, 16, 18, 21, 23, 26, 28, 31}, // SKINCOLOR_POPCORN
|
||||||
{ 80, 88, 89, 98, 99, 91, 12, 14, 16, 18, 20, 22, 24, 26, 28, 31}, // SKINCOLOR_ARTICHOKE
|
{ 80, 88, 89, 98, 99, 91, 12, 14, 16, 18, 20, 22, 24, 26, 28, 31}, // SKINCOLOR_ARTICHOKE
|
||||||
{ 0, 128, 129, 130, 146, 170, 14, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_PIGEON
|
{ 0, 128, 129, 130, 146, 170, 14, 15, 17, 19, 21, 23, 25, 27, 29, 31}, // SKINCOLOR_PIGEON
|
||||||
|
|
@ -284,7 +284,7 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = {
|
||||||
{ 48, 49, 50, 51, 53, 34, 36, 38, 184, 185, 168, 168, 169, 169, 254, 31}, // SKINCOLOR_SCARLET
|
{ 48, 49, 50, 51, 53, 34, 36, 38, 184, 185, 168, 168, 169, 169, 254, 31}, // SKINCOLOR_SCARLET
|
||||||
{ 72, 73, 64, 51, 52, 54, 34, 36, 38, 40, 42, 43, 44, 71, 46, 47}, // SKINCOLOR_KETCHUP
|
{ 72, 73, 64, 51, 52, 54, 34, 36, 38, 40, 42, 43, 44, 71, 46, 47}, // SKINCOLOR_KETCHUP
|
||||||
{ 0, 208, 216, 209, 210, 211, 212, 57, 58, 59, 60, 61, 63, 71, 47, 31}, // SKINCOLOR_DAWN
|
{ 0, 208, 216, 209, 210, 211, 212, 57, 58, 59, 60, 61, 63, 71, 47, 31}, // SKINCOLOR_DAWN
|
||||||
{ 82, 72, 73, 64, 51, 53, 55, 213, 214, 195, 195, 173, 174, 175, 253, 254}, // SKINCOLOR_SUNSET
|
{ 82, 72, 73, 64, 51, 53, 55, 213, 214, 195, 195, 173, 174, 175, 253, 254}, // SKINCOLOR_SUNSLAM
|
||||||
{ 0, 0, 208, 208, 48, 49, 50, 52, 53, 54, 56, 57, 58, 60, 61, 63}, // SKINCOLOR_CREAMSICLE
|
{ 0, 0, 208, 208, 48, 49, 50, 52, 53, 54, 56, 57, 58, 60, 61, 63}, // SKINCOLOR_CREAMSICLE
|
||||||
{208, 48, 49, 50, 51, 52, 53, 54, 55, 57, 59, 60, 62, 44, 71, 47}, // SKINCOLOR_ORANGE
|
{208, 48, 49, 50, 51, 52, 53, 54, 55, 57, 59, 60, 62, 44, 71, 47}, // SKINCOLOR_ORANGE
|
||||||
{ 50, 52, 55, 56, 58, 59, 60, 61, 62, 63, 44, 45, 71, 46, 47, 30}, // SKINCOLOR_ROSEWOOD
|
{ 50, 52, 55, 56, 58, 59, 60, 61, 62, 63, 44, 45, 71, 46, 47, 30}, // SKINCOLOR_ROSEWOOD
|
||||||
|
|
@ -344,9 +344,9 @@ UINT8 colortranslations[MAXTRANSLATIONS][16] = {
|
||||||
{ 0, 0, 0, 252, 252, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 254}, // SKINCOLOR_THISTLE
|
{ 0, 0, 0, 252, 252, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 254}, // SKINCOLOR_THISTLE
|
||||||
{ 0, 252, 160, 161, 162, 163, 164, 165, 166, 167, 168, 168, 169, 169, 253, 254}, // SKINCOLOR_PURPLE
|
{ 0, 252, 160, 161, 162, 163, 164, 165, 166, 167, 168, 168, 169, 169, 253, 254}, // SKINCOLOR_PURPLE
|
||||||
{ 0, 128, 128, 129, 129, 146, 170, 162, 163, 164, 165, 166, 167, 168, 169, 254}, // SKINCOLOR_PASTEL
|
{ 0, 128, 128, 129, 129, 146, 170, 162, 163, 164, 165, 166, 167, 168, 169, 254}, // SKINCOLOR_PASTEL
|
||||||
{ 0, 144, 145, 146, 170, 162, 163, 184, 184, 207, 207, 44, 45, 46, 47, 31}, // SKINCOLOR_MOONSLAM
|
{ 0, 144, 145, 146, 170, 162, 163, 184, 184, 207, 207, 44, 45, 46, 47, 31}, // SKINCOLOR_MOONSET
|
||||||
{252, 200, 201, 192, 193, 194, 172, 172, 173, 173, 174, 174, 175, 169, 253, 254}, // SKINCOLOR_DUSK
|
{252, 200, 201, 192, 193, 194, 172, 172, 173, 173, 174, 174, 175, 169, 253, 254}, // SKINCOLOR_DUSK
|
||||||
{ 0, 252, 252, 200, 201, 181, 182, 183, 184, 166, 167, 168, 169, 253, 254, 31}, // SKINCOLOR_BUBBLEGUM
|
{176, 177, 178, 179, 180, 181, 182, 183, 184, 164, 165, 166, 167, 168, 169, 254}, // SKINCOLOR_VIOLET
|
||||||
{176, 177, 178, 179, 180, 181, 182, 183, 184, 184, 185, 185, 186, 187, 30, 31}, // SKINCOLOR_MAGENTA
|
{176, 177, 178, 179, 180, 181, 182, 183, 184, 184, 185, 185, 186, 187, 30, 31}, // SKINCOLOR_MAGENTA
|
||||||
{208, 209, 209, 32, 33, 182, 183, 184, 185, 185, 186, 186, 187, 253, 254, 31}, // SKINCOLOR_FUCHSIA
|
{208, 209, 209, 32, 33, 182, 183, 184, 185, 185, 186, 186, 187, 253, 254, 31}, // SKINCOLOR_FUCHSIA
|
||||||
{ 0, 0, 88, 88, 89, 6, 8, 10, 193, 194, 195, 184, 185, 186, 187, 31}, // SKINCOLOR_TOXIC
|
{ 0, 0, 88, 88, 89, 6, 8, 10, 193, 194, 195, 184, 185, 186, 187, 31}, // SKINCOLOR_TOXIC
|
||||||
|
|
@ -2157,8 +2157,8 @@ void K_RespawnChecker(player_t *player)
|
||||||
fixed_t newx, newy, newz;
|
fixed_t newx, newy, newz;
|
||||||
|
|
||||||
newangle = FixedAngle(((360/8)*i)*FRACUNIT);
|
newangle = FixedAngle(((360/8)*i)*FRACUNIT);
|
||||||
newx = player->mo->x + P_ReturnThrustX(player->mo, newangle, 31<<FRACBITS); // does NOT use scale, since this effect doesn't scale properly
|
newx = player->mo->x + P_ReturnThrustX(player->mo, newangle, 31 * player->mo->scale);
|
||||||
newy = player->mo->y + P_ReturnThrustY(player->mo, newangle, 31<<FRACBITS);
|
newy = player->mo->y + P_ReturnThrustY(player->mo, newangle, 31 * player->mo->scale);
|
||||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||||
newz = player->mo->z + player->mo->height;
|
newz = player->mo->z + player->mo->height;
|
||||||
else
|
else
|
||||||
|
|
@ -2172,8 +2172,8 @@ void K_RespawnChecker(player_t *player)
|
||||||
laser->eflags |= MFE_VERTICALFLIP;
|
laser->eflags |= MFE_VERTICALFLIP;
|
||||||
P_SetTarget(&laser->target, player->mo);
|
P_SetTarget(&laser->target, player->mo);
|
||||||
laser->angle = newangle+ANGLE_90;
|
laser->angle = newangle+ANGLE_90;
|
||||||
laser->momz = (8<<FRACBITS) * P_MobjFlip(player->mo);
|
mo->momz = (8 * player->mo->scale) * P_MobjFlip(player->mo);
|
||||||
P_SetScale(laser, (laser->destscale = FRACUNIT));
|
P_SetScale(mo, (mo->destscale = player->mo->scale));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3388,8 +3388,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;
|
||||||
|
|
@ -3403,16 +3457,17 @@ static void K_SpawnDriftSparks(player_t *player)
|
||||||
if (leveltime % 2 == 1)
|
if (leveltime % 2 == 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!P_IsObjectOnGround(player->mo))
|
if (!player->kartstuff[k_drift]
|
||||||
return;
|
|| (player->kartstuff[k_driftcharge] < ds && !(player->kartstuff[k_driftcharge] < 0)))
|
||||||
|
|
||||||
if (!player->kartstuff[k_drift] || player->kartstuff[k_driftcharge] < K_GetKartDriftSparkValue(player))
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
travelangle = player->mo->angle-(ANGLE_45/5)*player->kartstuff[k_drift];
|
travelangle = player->mo->angle-(ANGLE_45/5)*player->kartstuff[k_drift];
|
||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
|
SINT8 size = 1;
|
||||||
|
UINT8 trail = 0;
|
||||||
|
|
||||||
newx = player->mo->x + P_ReturnThrustX(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(32*FRACUNIT, player->mo->scale));
|
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));
|
newy = player->mo->y + P_ReturnThrustY(player->mo, travelangle + ((i&1) ? -1 : 1)*ANGLE_135, FixedMul(32*FRACUNIT, player->mo->scale));
|
||||||
spark = P_SpawnMobj(newx, newy, player->mo->z, MT_DRIFTSPARK);
|
spark = P_SpawnMobj(newx, newy, player->mo->z, MT_DRIFTSPARK);
|
||||||
|
|
@ -3426,20 +3481,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;
|
||||||
|
|
||||||
if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*4)
|
spark->color = K_DriftSparkColor(player, player->kartstuff[k_driftcharge]);
|
||||||
|
|
||||||
|
if (player->kartstuff[k_driftcharge] < 0)
|
||||||
{
|
{
|
||||||
spark->color = (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1)));
|
// Stage 0: Yellow
|
||||||
|
size = 0;
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(player)*2)
|
else if (player->kartstuff[k_driftcharge] >= ds*4)
|
||||||
{
|
{
|
||||||
if (player->kartstuff[k_driftcharge] <= (K_GetKartDriftSparkValue(player)*2)+(24*3))
|
// Stage 3: Rainbow
|
||||||
spark->color = SKINCOLOR_RASPBERRY; // transition
|
size = 2;
|
||||||
|
trail = 2;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_driftcharge] <= (ds*4)+(32*3))
|
||||||
|
{
|
||||||
|
// transition
|
||||||
|
P_SetScale(spark, (spark->destscale = spark->scale*3/2));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
spark->color = SKINCOLOR_KETCHUP;
|
{
|
||||||
|
spark->colorized = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (player->kartstuff[k_driftcharge] >= ds*2)
|
||||||
|
{
|
||||||
|
// Stage 2: Blue
|
||||||
|
size = 2;
|
||||||
|
trail = 1;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_driftcharge] <= (ds*2)+(32*3))
|
||||||
|
{
|
||||||
|
// transition
|
||||||
|
P_SetScale(spark, (spark->destscale = spark->scale*3/2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spark->color = SKINCOLOR_SAPPHIRE;
|
// Stage 1: Red
|
||||||
|
size = 1;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_driftcharge] <= (ds)+(32*3))
|
||||||
|
{
|
||||||
|
// transition
|
||||||
|
P_SetScale(spark, (spark->destscale = spark->scale*2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn > 0) // Inward drifts
|
if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn > 0) // Inward drifts
|
||||||
|
|
@ -3447,22 +3533,40 @@ static void K_SpawnDriftSparks(player_t *player)
|
||||||
{
|
{
|
||||||
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|
||||||
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
|
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
|
||||||
P_SetMobjState(spark, S_DRIFTSPARK_A1);
|
{
|
||||||
|
size++;
|
||||||
|
}
|
||||||
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|
||||||
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
|
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
|
||||||
P_SetMobjState(spark, S_DRIFTSPARK_C1);
|
{
|
||||||
|
size--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn < 0) // Outward drifts
|
else if ((player->kartstuff[k_drift] > 0 && player->cmd.driftturn < 0) // Outward drifts
|
||||||
|| (player->kartstuff[k_drift] < 0 && player->cmd.driftturn > 0))
|
|| (player->kartstuff[k_drift] < 0 && player->cmd.driftturn > 0))
|
||||||
{
|
{
|
||||||
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|
if ((player->kartstuff[k_drift] < 0 && (i & 1))
|
||||||
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
|
|| (player->kartstuff[k_drift] > 0 && !(i & 1)))
|
||||||
P_SetMobjState(spark, S_DRIFTSPARK_C1);
|
{
|
||||||
|
size--;
|
||||||
|
}
|
||||||
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|
else if ((player->kartstuff[k_drift] < 0 && !(i & 1))
|
||||||
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
|
|| (player->kartstuff[k_drift] > 0 && (i & 1)))
|
||||||
P_SetMobjState(spark, S_DRIFTSPARK_A1);
|
{
|
||||||
|
size++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (size == 2)
|
||||||
|
P_SetMobjState(spark, S_DRIFTSPARK_A1);
|
||||||
|
else if (size < 1)
|
||||||
|
P_SetMobjState(spark, S_DRIFTSPARK_C1);
|
||||||
|
else if (size > 2)
|
||||||
|
P_SetMobjState(spark, S_DRIFTSPARK_D1);
|
||||||
|
|
||||||
|
if (trail > 0)
|
||||||
|
spark->tics += trail;
|
||||||
|
|
||||||
K_MatchGenericExtraFlags(spark, player->mo);
|
K_MatchGenericExtraFlags(spark, player->mo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3724,7 +3828,7 @@ void K_SpawnDraftDust(mobj_t *mo)
|
||||||
void K_DriftDustHandling(mobj_t *spawner)
|
void K_DriftDustHandling(mobj_t *spawner)
|
||||||
{
|
{
|
||||||
angle_t anglediff;
|
angle_t anglediff;
|
||||||
const INT16 spawnrange = spawner->radius>>FRACBITS;
|
const INT16 spawnrange = spawner->radius >> FRACBITS;
|
||||||
|
|
||||||
if (!P_IsObjectOnGround(spawner) || leveltime % 2 != 0)
|
if (!P_IsObjectOnGround(spawner) || leveltime % 2 != 0)
|
||||||
return;
|
return;
|
||||||
|
|
@ -3741,7 +3845,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)
|
||||||
|
|
@ -3752,7 +3856,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)));
|
||||||
|
|
@ -3763,12 +3867,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) << FRACBITS;
|
||||||
fixed_t spawny = P_RandomRange(-spawnrange, spawnrange)<<FRACBITS;
|
fixed_t spawny = P_RandomRange(-spawnrange, spawnrange) << FRACBITS;
|
||||||
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*FRACUNIT/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*FRACUNIT/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;
|
||||||
|
|
@ -3778,6 +3882,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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3809,10 +3942,18 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
// Figure out projectile speed by game speed
|
// Figure out projectile speed by game speed
|
||||||
if (missile && mapthing != MT_BALLHOG) // Trying to keep compatability...
|
if (missile)
|
||||||
PROJSPEED = FixedMul(mobjinfo[mapthing].speed, FRACUNIT + ((gamespeed-1) * (FRACUNIT/4)));
|
{
|
||||||
|
// Use info->speed for missiles
|
||||||
|
PROJSPEED = FixedMul(mobjinfo[mapthing].speed, K_GetKartGameSpeedScalar(gamespeed));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
PROJSPEED = (82 + ((gamespeed-1) * 14)) * FRACUNIT; // Avg Speed is 41 in Normal
|
{
|
||||||
|
// Use pre-determined speed for tossing
|
||||||
|
PROJSPEED = FixedMul(82 << FRACBITS, K_GetKartGameSpeedScalar(gamespeed));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Scale to map size
|
||||||
PROJSPEED = FixedMul(PROJSPEED, mapobjectscale);
|
PROJSPEED = FixedMul(PROJSPEED, mapobjectscale);
|
||||||
|
|
||||||
if (altthrow)
|
if (altthrow)
|
||||||
|
|
@ -3858,11 +3999,11 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
if (dir == -1)
|
if (dir == -1)
|
||||||
{
|
{
|
||||||
// Shoot backward
|
// Shoot backward
|
||||||
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x06000000, 0, PROJSPEED/4);
|
mo = K_SpawnKartMissile(player->mo, mapthing, (player->mo->angle + ANGLE_180) - 0x06000000, 0, PROJSPEED/8);
|
||||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x03000000, 0, PROJSPEED/4);
|
K_SpawnKartMissile(player->mo, mapthing, (player->mo->angle + ANGLE_180) - 0x03000000, 0, PROJSPEED/8);
|
||||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, PROJSPEED/4);
|
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, PROJSPEED/8);
|
||||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x03000000, 0, PROJSPEED/4);
|
K_SpawnKartMissile(player->mo, mapthing, (player->mo->angle + ANGLE_180) + 0x03000000, 0, PROJSPEED/8);
|
||||||
K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x06000000, 0, PROJSPEED/4);
|
K_SpawnKartMissile(player->mo, mapthing, (player->mo->angle + ANGLE_180) + 0x06000000, 0, PROJSPEED/8);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -3879,7 +4020,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
if (dir == -1 && mapthing != MT_SPB)
|
if (dir == -1 && mapthing != MT_SPB)
|
||||||
{
|
{
|
||||||
// Shoot backward
|
// Shoot backward
|
||||||
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, PROJSPEED/2);
|
mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, PROJSPEED/8);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -3913,7 +4054,7 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map
|
||||||
if (mo)
|
if (mo)
|
||||||
{
|
{
|
||||||
angle_t fa = player->mo->angle>>ANGLETOFINESHIFT;
|
angle_t fa = player->mo->angle>>ANGLETOFINESHIFT;
|
||||||
fixed_t HEIGHT = (20 + (dir*10))*mapobjectscale + (player->mo->momz*P_MobjFlip(player->mo));
|
fixed_t HEIGHT = (20 + (dir*10))*FRACUNIT + (player->mo->momz*P_MobjFlip(player->mo));
|
||||||
|
|
||||||
P_SetObjectMomZ(mo, HEIGHT, false);
|
P_SetObjectMomZ(mo, HEIGHT, false);
|
||||||
mo->momx = player->mo->momx + FixedMul(FINECOSINE(fa), PROJSPEED*dir);
|
mo->momx = player->mo->momx + FixedMul(FINECOSINE(fa), PROJSPEED*dir);
|
||||||
|
|
@ -6353,42 +6494,57 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
// Drift Release (Moved here so you can't "chain" drifts)
|
// Drift Release (Moved here so you can't "chain" drifts)
|
||||||
if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
|
if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
|
||||||
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
|
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
|
||||||
&& player->kartstuff[k_driftcharge] < dsone
|
|
||||||
&& onground)
|
&& onground)
|
||||||
{
|
{
|
||||||
player->kartstuff[k_driftcharge] = 0;
|
if (player->kartstuff[k_driftcharge] < 0 || player->kartstuff[k_driftcharge] >= dsone)
|
||||||
}
|
{
|
||||||
else if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
|
//mobj_t *overlay = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z, MT_DRIFTEXPLODE);
|
||||||
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
|
//P_SetTarget(&overlay->target, player->mo);
|
||||||
&& (player->kartstuff[k_driftcharge] >= dsone && player->kartstuff[k_driftcharge] < dstwo)
|
//P_SetScale(overlay, (overlay->destscale = player->mo->scale));
|
||||||
&& onground)
|
//K_FlipFromObject(overlay, player->mo);
|
||||||
{
|
|
||||||
if (player->kartstuff[k_driftboost] < 20)
|
S_StartSound(player->mo, sfx_s23c);
|
||||||
player->kartstuff[k_driftboost] = 20;
|
//K_SpawnDashDustRelease(player);
|
||||||
S_StartSound(player->mo, sfx_s23c);
|
|
||||||
//K_SpawnDashDustRelease(player);
|
if (player->kartstuff[k_driftcharge] < 0)
|
||||||
player->kartstuff[k_driftcharge] = 0;
|
{
|
||||||
}
|
// Stage 0: Yellow sparks
|
||||||
else if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
|
if (player->kartstuff[k_driftboost] < 15)
|
||||||
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
|
player->kartstuff[k_driftboost] = 15;
|
||||||
&& player->kartstuff[k_driftcharge] < dsthree
|
|
||||||
&& onground)
|
//overlay->color = SKINCOLOR_GOLD;
|
||||||
{
|
//overlay->fuse = 8;
|
||||||
if (player->kartstuff[k_driftboost] < 50)
|
}
|
||||||
player->kartstuff[k_driftboost] = 50;
|
else if (player->kartstuff[k_driftcharge] >= dsone && player->kartstuff[k_driftcharge] < dstwo)
|
||||||
S_StartSound(player->mo, sfx_s23c);
|
{
|
||||||
//K_SpawnDashDustRelease(player);
|
// Stage 1: Red sparks
|
||||||
player->kartstuff[k_driftcharge] = 0;
|
if (player->kartstuff[k_driftboost] < 20)
|
||||||
}
|
player->kartstuff[k_driftboost] = 20;
|
||||||
else if ((player->kartstuff[k_drift] != -5 && player->kartstuff[k_drift] != 5)
|
|
||||||
// || (player->kartstuff[k_drift] >= 1 && player->kartstuff[k_turndir] != 1) || (player->kartstuff[k_drift] <= -1 && player->kartstuff[k_turndir] != -1))
|
//overlay->color = SKINCOLOR_KETCHUP;
|
||||||
&& player->kartstuff[k_driftcharge] >= dsthree
|
//overlay->fuse = 16;
|
||||||
&& onground)
|
}
|
||||||
{
|
else if (player->kartstuff[k_driftcharge] < dsthree)
|
||||||
if (player->kartstuff[k_driftboost] < 125)
|
{
|
||||||
player->kartstuff[k_driftboost] = 125;
|
// Stage 2: Blue sparks
|
||||||
S_StartSound(player->mo, sfx_s23c);
|
if (player->kartstuff[k_driftboost] < 50)
|
||||||
//K_SpawnDashDustRelease(player);
|
player->kartstuff[k_driftboost] = 50;
|
||||||
|
|
||||||
|
//overlay->color = SKINCOLOR_SAPPHIRE;
|
||||||
|
//overlay->fuse = 32;
|
||||||
|
}
|
||||||
|
else if (player->kartstuff[k_driftcharge] >= dsthree)
|
||||||
|
{
|
||||||
|
// Stage 3: Rainbow sparks
|
||||||
|
if (player->kartstuff[k_driftboost] < 125)
|
||||||
|
player->kartstuff[k_driftboost] = 125;
|
||||||
|
|
||||||
|
//overlay->color = SKINCOLOR_SILVER;
|
||||||
|
//overlay->fuse = 120;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove charge
|
||||||
player->kartstuff[k_driftcharge] = 0;
|
player->kartstuff[k_driftcharge] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6424,71 +6580,107 @@ static void K_KartDrift(player_t *player, boolean onground)
|
||||||
player->kartstuff[k_driftend] = 0;
|
player->kartstuff[k_driftend] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (player->kartstuff[k_spinouttimer] > 0 || player->speed == 0)
|
||||||
// Incease/decrease the drift value to continue drifting in that direction
|
|
||||||
if (player->kartstuff[k_spinouttimer] == 0 && player->kartstuff[k_jmp] == 1 && onground && player->kartstuff[k_drift] != 0)
|
|
||||||
{
|
{
|
||||||
|
// Stop drifting
|
||||||
|
player->kartstuff[k_drift] = player->kartstuff[k_driftcharge] = 0;
|
||||||
|
player->kartstuff[k_aizdriftstrat] = player->kartstuff[k_brakedrift] = 0;
|
||||||
|
player->kartstuff[k_getsparks] = 0;
|
||||||
|
}
|
||||||
|
else if (player->kartstuff[k_jmp] == 1 && player->kartstuff[k_drift] != 0)
|
||||||
|
{
|
||||||
|
// Incease/decrease the drift value to continue drifting in that direction
|
||||||
fixed_t driftadditive = 24;
|
fixed_t driftadditive = 24;
|
||||||
|
boolean playsound = false;
|
||||||
|
|
||||||
if (player->kartstuff[k_drift] >= 1) // Drifting to the left
|
if (onground)
|
||||||
{
|
{
|
||||||
player->kartstuff[k_drift]++;
|
if (player->kartstuff[k_drift] >= 1) // Drifting to the left
|
||||||
if (player->kartstuff[k_drift] > 5)
|
{
|
||||||
player->kartstuff[k_drift] = 5;
|
player->kartstuff[k_drift]++;
|
||||||
|
if (player->kartstuff[k_drift] > 5)
|
||||||
|
player->kartstuff[k_drift] = 5;
|
||||||
|
|
||||||
if (player->cmd.driftturn > 0) // Inward
|
if (player->cmd.driftturn > 0) // Inward
|
||||||
driftadditive += abs(player->cmd.driftturn)/100;
|
driftadditive += abs(player->cmd.driftturn)/100;
|
||||||
if (player->cmd.driftturn < 0) // Outward
|
if (player->cmd.driftturn < 0) // Outward
|
||||||
driftadditive -= abs(player->cmd.driftturn)/75;
|
driftadditive -= abs(player->cmd.driftturn)/75;
|
||||||
|
}
|
||||||
|
else if (player->kartstuff[k_drift] <= -1) // Drifting to the right
|
||||||
|
{
|
||||||
|
player->kartstuff[k_drift]--;
|
||||||
|
if (player->kartstuff[k_drift] < -5)
|
||||||
|
player->kartstuff[k_drift] = -5;
|
||||||
|
|
||||||
|
if (player->cmd.driftturn < 0) // Inward
|
||||||
|
driftadditive += abs(player->cmd.driftturn)/100;
|
||||||
|
if (player->cmd.driftturn > 0) // Outward
|
||||||
|
driftadditive -= abs(player->cmd.driftturn)/75;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Disable drift-sparks until you're going fast enough
|
||||||
|
if (player->kartstuff[k_getsparks] == 0
|
||||||
|
|| (player->kartstuff[k_offroad]
|
||||||
|
&& !player->kartstuff[k_invincibilitytimer]
|
||||||
|
&& !player->kartstuff[k_hyudorotimer]
|
||||||
|
&& !EITHERSNEAKER(player)))
|
||||||
|
driftadditive = 0;
|
||||||
|
|
||||||
|
// Inbetween minspeed and minspeed*2, it'll keep your previous drift-spark state.
|
||||||
|
if (player->speed > minspeed*2)
|
||||||
|
{
|
||||||
|
player->kartstuff[k_getsparks] = 1;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_driftcharge] <= -1)
|
||||||
|
{
|
||||||
|
player->kartstuff[k_driftcharge] = dsone; // Back to red
|
||||||
|
playsound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (player->speed <= minspeed)
|
||||||
|
{
|
||||||
|
player->kartstuff[k_getsparks] = 0;
|
||||||
|
driftadditive = 0;
|
||||||
|
|
||||||
|
if (player->kartstuff[k_driftcharge] >= dsone)
|
||||||
|
{
|
||||||
|
player->kartstuff[k_driftcharge] = -1; // Set yellow sparks
|
||||||
|
playsound = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (player->kartstuff[k_drift] <= -1) // Drifting to the right
|
else
|
||||||
{
|
{
|
||||||
player->kartstuff[k_drift]--;
|
|
||||||
if (player->kartstuff[k_drift] < -5)
|
|
||||||
player->kartstuff[k_drift] = -5;
|
|
||||||
|
|
||||||
if (player->cmd.driftturn < 0) // Inward
|
|
||||||
driftadditive += abs(player->cmd.driftturn)/100;
|
|
||||||
if (player->cmd.driftturn > 0) // Outward
|
|
||||||
driftadditive -= abs(player->cmd.driftturn)/75;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disable drift-sparks until you're going fast enough
|
|
||||||
if (player->kartstuff[k_getsparks] == 0
|
|
||||||
|| (player->kartstuff[k_offroad]
|
|
||||||
&& !player->kartstuff[k_invincibilitytimer]
|
|
||||||
&& !player->kartstuff[k_hyudorotimer]
|
|
||||||
&& !EITHERSNEAKER(player)))
|
|
||||||
driftadditive = 0;
|
driftadditive = 0;
|
||||||
if (player->speed > minspeed*2)
|
}
|
||||||
player->kartstuff[k_getsparks] = 1;
|
|
||||||
|
|
||||||
// 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))
|
||||||
|
{
|
||||||
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;
|
||||||
player->kartstuff[k_driftend] = 0;
|
player->kartstuff[k_driftend] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop drifting
|
|
||||||
if (player->kartstuff[k_spinouttimer] > 0 || player->speed < minspeed)
|
|
||||||
{
|
|
||||||
player->kartstuff[k_drift] = player->kartstuff[k_driftcharge] = 0;
|
|
||||||
player->kartstuff[k_aizdriftstrat] = player->kartstuff[k_brakedrift] = 0;
|
|
||||||
player->kartstuff[k_getsparks] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((!EITHERSNEAKER(player))
|
if ((!EITHERSNEAKER(player))
|
||||||
|| (!player->cmd.driftturn)
|
|| (!player->cmd.driftturn)
|
||||||
|| (!player->kartstuff[k_aizdriftstrat])
|
|| (!player->kartstuff[k_aizdriftstrat])
|
||||||
|
|
@ -10247,57 +10439,44 @@ 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;
|
const angle_t ang = R_PointToAngle2(0, 0, stplyr->rmomx, stplyr->rmomy) - stplyr->frameangle;
|
||||||
INT32 dsthree = dstwo*2;
|
// 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 yoffs = -(P_ReturnThrustX(stplyr->mo, ang, 4*FRACUNIT) - 4*FRACUNIT);
|
||||||
|
|
||||||
#ifndef DONTLIKETOASTERSFPTWEAKS
|
if (splitscreen)
|
||||||
|
xoffs = FixedMul(xoffs, scale);
|
||||||
|
|
||||||
|
xoffs -= (tn)*scale;
|
||||||
|
xoffs -= (dr)*scale;
|
||||||
|
|
||||||
|
if (stplyr->frameangle == stplyr->mo->angle)
|
||||||
{
|
{
|
||||||
const angle_t ang = R_PointToAngle2(0, 0, stplyr->rmomx, stplyr->rmomy) - stplyr->frameangle;
|
const fixed_t mag = FixedDiv(stplyr->speed, 10*stplyr->mo->scale);
|
||||||
// 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 yoffs = -(P_ReturnThrustX(stplyr->mo, ang, 4*FRACUNIT) - 4*FRACUNIT);
|
|
||||||
|
|
||||||
if (splitscreen)
|
if (mag < FRACUNIT)
|
||||||
xoffs = FixedMul(xoffs, scale);
|
|
||||||
|
|
||||||
xoffs -= (tn)*scale;
|
|
||||||
xoffs -= (dr)*scale;
|
|
||||||
|
|
||||||
if (stplyr->frameangle == stplyr->mo->angle)
|
|
||||||
{
|
{
|
||||||
const fixed_t mag = FixedDiv(stplyr->speed, 10*stplyr->mo->scale);
|
xoffs = FixedMul(xoffs, mag);
|
||||||
|
if (!splitscreen)
|
||||||
if (mag < FRACUNIT)
|
yoffs = FixedMul(yoffs, mag);
|
||||||
{
|
|
||||||
xoffs = FixedMul(xoffs, mag);
|
|
||||||
if (!splitscreen)
|
|
||||||
yoffs = FixedMul(yoffs, mag);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stplyr->mo->momz > 0) // TO-DO: Draw more of the kart so we can remove this if!
|
|
||||||
yoffs += stplyr->mo->momz/3;
|
|
||||||
|
|
||||||
if (encoremode)
|
|
||||||
x -= xoffs;
|
|
||||||
else
|
|
||||||
x += xoffs;
|
|
||||||
if (!splitscreen)
|
|
||||||
y += yoffs;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// drift sparks!
|
if (stplyr->mo->momz > 0) // TO-DO: Draw more of the kart so we can remove this if!
|
||||||
if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dsthree))
|
yoffs += stplyr->mo->momz/3;
|
||||||
colmap = R_GetTranslationColormap(TC_RAINBOW, (UINT8)(1 + (leveltime % (MAXSKINCOLORS-1))), GTC_CACHE);
|
|
||||||
else if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dstwo))
|
if (encoremode)
|
||||||
colmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_KETCHUP, GTC_CACHE);
|
x -= xoffs;
|
||||||
else if ((leveltime & 1) && (stplyr->kartstuff[k_driftcharge] >= dsone))
|
|
||||||
colmap = R_GetTranslationColormap(TC_RAINBOW, SKINCOLOR_SAPPHIRE, GTC_CACHE);
|
|
||||||
else
|
else
|
||||||
#endif
|
x += xoffs;
|
||||||
// invincibility/grow/shrink!
|
if (!splitscreen)
|
||||||
if (stplyr->mo->colorized && stplyr->mo->color)
|
y += yoffs;
|
||||||
|
|
||||||
|
|
||||||
|
if ((leveltime & 1) && (driftcolor != SKINCOLOR_NONE)) // drift sparks!
|
||||||
|
colmap = R_GetTranslationColormap(TC_RAINBOW, driftcolor, GTC_CACHE);
|
||||||
|
else if (stplyr->mo->colorized && stplyr->mo->color) // invincibility/grow/shrink!
|
||||||
colmap = R_GetTranslationColormap(TC_RAINBOW, stplyr->mo->color, GTC_CACHE);
|
colmap = R_GetTranslationColormap(TC_RAINBOW, stplyr->mo->color, GTC_CACHE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,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);
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,8 @@ enum cameraf {
|
||||||
camera_momx,
|
camera_momx,
|
||||||
camera_momy,
|
camera_momy,
|
||||||
camera_momz,
|
camera_momz,
|
||||||
|
camera_pan,
|
||||||
|
camera_pitch,
|
||||||
camera_pnum
|
camera_pnum
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -158,6 +160,8 @@ static const char *const camera_opt[] = {
|
||||||
"momx",
|
"momx",
|
||||||
"momy",
|
"momy",
|
||||||
"momz",
|
"momz",
|
||||||
|
"pan",
|
||||||
|
"pitch",
|
||||||
"pnum",
|
"pnum",
|
||||||
NULL};
|
NULL};
|
||||||
|
|
||||||
|
|
@ -314,6 +318,12 @@ static int camera_get(lua_State *L)
|
||||||
case camera_momz:
|
case camera_momz:
|
||||||
lua_pushinteger(L, cam->momz);
|
lua_pushinteger(L, cam->momz);
|
||||||
break;
|
break;
|
||||||
|
case camera_pan:
|
||||||
|
lua_pushinteger(L, cam->pan);
|
||||||
|
break;
|
||||||
|
case camera_pitch:
|
||||||
|
lua_pushinteger(L, cam->pitch);
|
||||||
|
break;
|
||||||
case camera_pnum:
|
case camera_pnum:
|
||||||
lua_pushinteger(L, camnum);
|
lua_pushinteger(L, camnum);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,8 @@ typedef struct camera_s
|
||||||
|
|
||||||
// SRB2Kart: camera pans while drifting
|
// SRB2Kart: camera pans while drifting
|
||||||
fixed_t pan;
|
fixed_t pan;
|
||||||
|
// SRB2Kart: camera pitches on slopes
|
||||||
|
angle_t pitch;
|
||||||
} camera_t;
|
} camera_t;
|
||||||
|
|
||||||
extern camera_t camera[MAXSPLITSCREENPLAYERS];
|
extern camera_t camera[MAXSPLITSCREENPLAYERS];
|
||||||
|
|
|
||||||
26
src/p_map.c
26
src/p_map.c
|
|
@ -305,7 +305,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
|
||||||
if (horizspeed)
|
if (horizspeed)
|
||||||
{
|
{
|
||||||
angle_t finalAngle = spring->angle;
|
angle_t finalAngle = spring->angle;
|
||||||
fixed_t finalSpeed = horizspeed;
|
fixed_t finalSpeed = FixedMul(horizspeed, FixedSqrt(FixedMul(hscale, spring->scale)));
|
||||||
fixed_t objectSpeed;
|
fixed_t objectSpeed;
|
||||||
|
|
||||||
if (object->player)
|
if (object->player)
|
||||||
|
|
@ -383,7 +383,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
|
||||||
// Horizontal speed is used as a minimum thrust, not a direct replacement
|
// Horizontal speed is used as a minimum thrust, not a direct replacement
|
||||||
finalSpeed = max(objectSpeed, finalSpeed);
|
finalSpeed = max(objectSpeed, finalSpeed);
|
||||||
|
|
||||||
P_InstaThrustEvenIn2D(object, finalAngle, FixedMul(finalSpeed, FixedSqrt(FixedMul(hscale, spring->scale))));
|
P_InstaThrustEvenIn2D(object, finalAngle, finalSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-solidify
|
// Re-solidify
|
||||||
|
|
@ -920,7 +920,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(tmthing, tmthing->info->deathsound);
|
S_StartSound(tmthing, tmthing->info->deathsound);
|
||||||
P_KillMobj(tmthing, thing, thing);
|
P_KillMobj(tmthing, thing, thing);
|
||||||
|
|
||||||
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(tmthing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
}
|
}
|
||||||
else if (thing->type == MT_ORBINAUT || thing->type == MT_JAWZ || thing->type == MT_JAWZ_DUD
|
else if (thing->type == MT_ORBINAUT || thing->type == MT_JAWZ || thing->type == MT_JAWZ_DUD
|
||||||
|
|
@ -937,7 +937,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(thing, thing->info->deathsound);
|
S_StartSound(thing, thing->info->deathsound);
|
||||||
P_KillMobj(thing, tmthing, tmthing);
|
P_KillMobj(thing, tmthing, tmthing);
|
||||||
|
|
||||||
P_SetObjectMomZ(thing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(thing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
|
|
||||||
P_SpawnMobj(thing->x/2 + tmthing->x/2, thing->y/2 + tmthing->y/2, thing->z/2 + tmthing->z/2, MT_ITEMCLASH);
|
P_SpawnMobj(thing->x/2 + tmthing->x/2, thing->y/2 + tmthing->y/2, thing->z/2 + tmthing->z/2, MT_ITEMCLASH);
|
||||||
|
|
@ -951,7 +951,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(tmthing, tmthing->info->deathsound);
|
S_StartSound(tmthing, tmthing->info->deathsound);
|
||||||
P_KillMobj(tmthing, thing, thing);
|
P_KillMobj(tmthing, thing, thing);
|
||||||
|
|
||||||
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(tmthing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
}
|
}
|
||||||
else if (thing->type == MT_SSMINE_SHIELD || thing->type == MT_SSMINE)
|
else if (thing->type == MT_SSMINE_SHIELD || thing->type == MT_SSMINE)
|
||||||
|
|
@ -965,7 +965,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(tmthing, tmthing->info->deathsound);
|
S_StartSound(tmthing, tmthing->info->deathsound);
|
||||||
P_KillMobj(tmthing, thing, thing);
|
P_KillMobj(tmthing, thing, thing);
|
||||||
|
|
||||||
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(tmthing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
|
|
||||||
// Bomb death
|
// Bomb death
|
||||||
|
|
@ -1093,7 +1093,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(tmthing, tmthing->info->deathsound);
|
S_StartSound(tmthing, tmthing->info->deathsound);
|
||||||
P_KillMobj(tmthing, thing, thing);
|
P_KillMobj(tmthing, thing, thing);
|
||||||
|
|
||||||
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(tmthing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
}
|
}
|
||||||
else if (thing->type == MT_BANANA || thing->type == MT_BANANA_SHIELD
|
else if (thing->type == MT_BANANA || thing->type == MT_BANANA_SHIELD
|
||||||
|
|
@ -1110,7 +1110,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(thing, thing->info->deathsound);
|
S_StartSound(thing, thing->info->deathsound);
|
||||||
P_KillMobj(thing, tmthing, tmthing);
|
P_KillMobj(thing, tmthing, tmthing);
|
||||||
|
|
||||||
P_SetObjectMomZ(thing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(thing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
|
|
||||||
P_SpawnMobj(thing->x/2 + tmthing->x/2, thing->y/2 + tmthing->y/2, thing->z/2 + tmthing->z/2, MT_ITEMCLASH);
|
P_SpawnMobj(thing->x/2 + tmthing->x/2, thing->y/2 + tmthing->y/2, thing->z/2 + tmthing->z/2, MT_ITEMCLASH);
|
||||||
|
|
@ -1124,7 +1124,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(tmthing, tmthing->info->deathsound);
|
S_StartSound(tmthing, tmthing->info->deathsound);
|
||||||
P_KillMobj(tmthing, thing, thing);
|
P_KillMobj(tmthing, thing, thing);
|
||||||
|
|
||||||
P_SetObjectMomZ(tmthing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(tmthing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(tmthing, R_PointToAngle2(thing->x, thing->y, tmthing->x, tmthing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1170,7 +1170,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(thing, thing->info->deathsound);
|
S_StartSound(thing, thing->info->deathsound);
|
||||||
P_KillMobj(thing, tmthing, tmthing);
|
P_KillMobj(thing, tmthing, tmthing);
|
||||||
|
|
||||||
P_SetObjectMomZ(thing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(thing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1221,7 +1221,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(thing, thing->info->deathsound);
|
S_StartSound(thing, thing->info->deathsound);
|
||||||
P_KillMobj(thing, tmthing, tmthing);
|
P_KillMobj(thing, tmthing, tmthing);
|
||||||
|
|
||||||
P_SetObjectMomZ(thing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(thing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
}
|
}
|
||||||
else if (thing->type == MT_BANANA_SHIELD || thing->type == MT_BANANA
|
else if (thing->type == MT_BANANA_SHIELD || thing->type == MT_BANANA
|
||||||
|
|
@ -1249,7 +1249,7 @@ static boolean PIT_CheckThing(mobj_t *thing)
|
||||||
S_StartSound(thing, thing->info->deathsound);
|
S_StartSound(thing, thing->info->deathsound);
|
||||||
P_KillMobj(thing, tmthing, tmthing);
|
P_KillMobj(thing, tmthing, tmthing);
|
||||||
|
|
||||||
P_SetObjectMomZ(thing, 8*FRACUNIT, false);
|
P_SetObjectMomZ(thing, 12*FRACUNIT, false);
|
||||||
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
P_InstaThrust(thing, R_PointToAngle2(tmthing->x, tmthing->y, thing->x, thing->y)+ANGLE_90, 16*FRACUNIT);
|
||||||
}
|
}
|
||||||
else if (thing->type == MT_SSMINE_SHIELD || thing->type == MT_SSMINE)
|
else if (thing->type == MT_SSMINE_SHIELD || thing->type == MT_SSMINE)
|
||||||
|
|
@ -3836,8 +3836,6 @@ void P_BouncePlayerMove(mobj_t *mo)
|
||||||
mmomx = mo->player->rmomx;
|
mmomx = mo->player->rmomx;
|
||||||
mmomy = mo->player->rmomy;
|
mmomy = mo->player->rmomy;
|
||||||
|
|
||||||
mo->player->kartstuff[k_drift] = 0;
|
|
||||||
mo->player->kartstuff[k_driftcharge] = 0;
|
|
||||||
mo->player->kartstuff[k_pogospring] = 0;
|
mo->player->kartstuff[k_pogospring] = 0;
|
||||||
|
|
||||||
// trace along the three leading corners
|
// trace along the three leading corners
|
||||||
|
|
|
||||||
40
src/p_mobj.c
40
src/p_mobj.c
|
|
@ -8357,6 +8357,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)
|
||||||
{
|
{
|
||||||
|
|
@ -8431,6 +8462,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;
|
||||||
|
|
||||||
|
|
@ -8443,12 +8475,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_KETCHUP;
|
|
||||||
else if (mobj->target->player->kartstuff[k_driftcharge] >= K_GetKartDriftSparkValue(mobj->target->player))
|
|
||||||
mobj->color = SKINCOLOR_SAPPHIRE;
|
|
||||||
else
|
else
|
||||||
mobj->color = SKINCOLOR_SILVER;
|
mobj->color = SKINCOLOR_SILVER;
|
||||||
|
|
||||||
|
|
|
||||||
58
src/p_user.c
58
src/p_user.c
|
|
@ -7149,8 +7149,8 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
{
|
{
|
||||||
static UINT8 lookbackdelay[4] = {0,0,0,0};
|
static UINT8 lookbackdelay[4] = {0,0,0,0};
|
||||||
UINT8 num;
|
UINT8 num;
|
||||||
angle_t angle = 0, focusangle = 0, focusaiming = 0;
|
angle_t angle = 0, focusangle = 0, focusaiming = 0, pitch = 0;
|
||||||
fixed_t x, y, z, dist, height, viewpointx, viewpointy, camspeed, camdist, camheight, pviewheight;
|
fixed_t x, y, z, dist, distxy, distz, height, viewpointx, viewpointy, camspeed, camdist, camheight, pviewheight;
|
||||||
fixed_t pan, xpan, ypan;
|
fixed_t pan, xpan, ypan;
|
||||||
INT32 camrotate;
|
INT32 camrotate;
|
||||||
boolean camstill, lookback;
|
boolean camstill, lookback;
|
||||||
|
|
@ -7402,8 +7402,36 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
height -= FixedMul(height, player->karthud[khud_boostcam]);
|
height -= FixedMul(height, player->karthud[khud_boostcam]);
|
||||||
}
|
}
|
||||||
|
|
||||||
x = mo->x - FixedMul(FINECOSINE((angle>>ANGLETOFINESHIFT) & FINEMASK), dist);
|
if (mo->standingslope)
|
||||||
y = mo->y - FixedMul(FINESINE((angle>>ANGLETOFINESHIFT) & FINEMASK), dist);
|
{
|
||||||
|
pitch = (angle_t)FixedMul(P_ReturnThrustX(mo, player->frameangle - mo->standingslope->xydirection, FRACUNIT), (fixed_t)mo->standingslope->zangle);
|
||||||
|
if (mo->eflags & MFE_VERTICALFLIP)
|
||||||
|
{
|
||||||
|
if (pitch >= ANGLE_180)
|
||||||
|
pitch = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (pitch < ANGLE_180)
|
||||||
|
pitch = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pitch = thiscam->pitch + (angle_t)FixedMul(pitch - thiscam->pitch, camspeed/4);
|
||||||
|
|
||||||
|
if (rendermode == render_opengl
|
||||||
|
#ifdef GL_SHADERS/* just so we can't possibly forget about it */
|
||||||
|
&& !cv_grshearing.value
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
distxy = FixedMul(dist, FINECOSINE((pitch>>ANGLETOFINESHIFT) & FINEMASK));
|
||||||
|
else
|
||||||
|
distxy = dist;
|
||||||
|
distz = -FixedMul(dist, FINESINE((pitch>>ANGLETOFINESHIFT) & FINEMASK));
|
||||||
|
if (splitscreen == 1) // 2 player is weird, this helps keep players on screen
|
||||||
|
distz = 3*distz/5;
|
||||||
|
|
||||||
|
x = mo->x - FixedMul(FINECOSINE((angle>>ANGLETOFINESHIFT) & FINEMASK), distxy);
|
||||||
|
y = mo->y - FixedMul(FINESINE((angle>>ANGLETOFINESHIFT) & FINEMASK), distxy);
|
||||||
|
|
||||||
// SRB2Kart: set camera panning
|
// SRB2Kart: set camera panning
|
||||||
if (camstill || resetcalled || player->playerstate == PST_DEAD)
|
if (camstill || resetcalled || player->playerstate == PST_DEAD)
|
||||||
|
|
@ -7413,7 +7441,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)
|
||||||
|
|
@ -7434,9 +7469,9 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
pviewheight = FixedMul(32<<FRACBITS, mo->scale);
|
pviewheight = FixedMul(32<<FRACBITS, mo->scale);
|
||||||
|
|
||||||
if (mo->eflags & MFE_VERTICALFLIP)
|
if (mo->eflags & MFE_VERTICALFLIP)
|
||||||
z = mo->z + mo->height - pviewheight - camheight;
|
z = mo->z + mo->height - pviewheight - camheight + distz;
|
||||||
else
|
else
|
||||||
z = mo->z + pviewheight + camheight;
|
z = mo->z + pviewheight + camheight + distz;
|
||||||
|
|
||||||
#ifndef NOCLIPCAM // Disable all z-clipping for noclip cam
|
#ifndef NOCLIPCAM // Disable all z-clipping for noclip cam
|
||||||
// move camera down to move under lower ceilings
|
// move camera down to move under lower ceilings
|
||||||
|
|
@ -7671,6 +7706,7 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
}
|
}
|
||||||
|
|
||||||
thiscam->pan = pan;
|
thiscam->pan = pan;
|
||||||
|
thiscam->pitch = pitch;
|
||||||
|
|
||||||
// compute aming to look the viewed point
|
// compute aming to look the viewed point
|
||||||
f1 = viewpointx-thiscam->x;
|
f1 = viewpointx-thiscam->x;
|
||||||
|
|
@ -7678,9 +7714,17 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall
|
||||||
dist = FixedHypot(f1, f2);
|
dist = FixedHypot(f1, f2);
|
||||||
|
|
||||||
if (mo->eflags & MFE_VERTICALFLIP)
|
if (mo->eflags & MFE_VERTICALFLIP)
|
||||||
|
{
|
||||||
angle = R_PointToAngle2(0, thiscam->z + thiscam->height, dist, mo->z + mo->height - P_GetPlayerHeight(player));
|
angle = R_PointToAngle2(0, thiscam->z + thiscam->height, dist, mo->z + mo->height - P_GetPlayerHeight(player));
|
||||||
|
if (thiscam->pitch < ANGLE_180 && thiscam->pitch > angle)
|
||||||
|
angle = thiscam->pitch;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
angle = R_PointToAngle2(0, thiscam->z, dist, mo->z + P_GetPlayerHeight(player));
|
angle = R_PointToAngle2(0, thiscam->z, dist, mo->z + P_GetPlayerHeight(player));
|
||||||
|
if (thiscam->pitch >= ANGLE_180 && thiscam->pitch < angle)
|
||||||
|
angle = thiscam->pitch;
|
||||||
|
}
|
||||||
|
|
||||||
if (player->playerstate != PST_DEAD && !((player->pflags & PF_NIGHTSMODE) && player->exiting))
|
if (player->playerstate != PST_DEAD && !((player->pflags & PF_NIGHTSMODE) && player->exiting))
|
||||||
angle += (focusaiming < ANGLE_180 ? focusaiming/2 : InvAngle(InvAngle(focusaiming)/2)); // overcomplicated version of '((signed)focusaiming)/2;'
|
angle += (focusaiming < ANGLE_180 ? focusaiming/2 : InvAngle(InvAngle(focusaiming)/2)); // overcomplicated version of '((signed)focusaiming)/2;'
|
||||||
|
|
|
||||||
|
|
@ -176,7 +176,7 @@ consvar_t cv_showhud = {"showhud", "Yes", CV_CALL, CV_YesNo, R_SetViewSize, 0,
|
||||||
consvar_t cv_translucenthud = {"translucenthud", "10", CV_SAVE, translucenthud_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_translucenthud = {"translucenthud", "10", CV_SAVE, translucenthud_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
||||||
consvar_t cv_translucency = {"translucency", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_translucency = {"translucency", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_drawdist = {"drawdist", "Infinite", CV_SAVE, drawdist_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_drawdist = {"drawdist", "8192", CV_SAVE, drawdist_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
//consvar_t cv_drawdist_nights = {"drawdist_nights", "2048", CV_SAVE, drawdist_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
//consvar_t cv_drawdist_nights = {"drawdist_nights", "2048", CV_SAVE, drawdist_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_drawdist_precip = {"drawdist_precip", "1024", CV_SAVE, drawdist_precip_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_drawdist_precip = {"drawdist_precip", "1024", CV_SAVE, drawdist_precip_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
//consvar_t cv_precipdensity = {"precipdensity", "Moderate", CV_SAVE, precipdensity_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
//consvar_t cv_precipdensity = {"precipdensity", "Moderate", CV_SAVE, precipdensity_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
|
@ -833,7 +833,7 @@ static void R_SetupFreelook(void)
|
||||||
// clip it in the case we are looking a hardware 90 degrees full aiming
|
// clip it in the case we are looking a hardware 90 degrees full aiming
|
||||||
// (lmps, network and use F12...)
|
// (lmps, network and use F12...)
|
||||||
G_SoftwareClipAimingPitch((INT32 *)&aimingangle);
|
G_SoftwareClipAimingPitch((INT32 *)&aimingangle);
|
||||||
dy = AIMINGTODY(aimingangle) * viewwidth/BASEVIDWIDTH;
|
dy = AIMINGTODY(aimingangle) * viewheight/BASEVIDHEIGHT;
|
||||||
yslope = &yslopetab[viewheight*8 - (viewheight/2 + dy)];
|
yslope = &yslopetab[viewheight*8 - (viewheight/2 + dy)];
|
||||||
}
|
}
|
||||||
centery = (viewheight/2) + dy;
|
centery = (viewheight/2) + dy;
|
||||||
|
|
|
||||||
|
|
@ -2102,7 +2102,7 @@ void R_AddSprites(sector_t *sec, INT32 lightlevel)
|
||||||
|
|
||||||
// Handle all things in sector.
|
// Handle all things in sector.
|
||||||
// If a limit exists, handle things a tiny bit different.
|
// If a limit exists, handle things a tiny bit different.
|
||||||
if ((limit_dist = (fixed_t)(/*(maptol & TOL_NIGHTS) ? cv_drawdist_nights.value : */cv_drawdist.value) << FRACBITS))
|
if ((limit_dist = (fixed_t)(cv_drawdist.value) * mapobjectscale))
|
||||||
{
|
{
|
||||||
for (thing = sec->thinglist; thing; thing = thing->snext)
|
for (thing = sec->thinglist; thing; thing = thing->snext)
|
||||||
{
|
{
|
||||||
|
|
@ -2168,7 +2168,7 @@ void R_AddSprites(sector_t *sec, INT32 lightlevel)
|
||||||
}
|
}
|
||||||
|
|
||||||
// no, no infinite draw distance for precipitation. this option at zero is supposed to turn it off
|
// no, no infinite draw distance for precipitation. this option at zero is supposed to turn it off
|
||||||
if ((limit_dist = (fixed_t)cv_drawdist_precip.value << FRACBITS))
|
if ((limit_dist = (fixed_t)(cv_drawdist_precip.value) * mapobjectscale))
|
||||||
{
|
{
|
||||||
for (precipthing = sec->preciplist; precipthing; precipthing = precipthing->snext)
|
for (precipthing = sec->preciplist; precipthing; precipthing = precipthing->snext)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1894,38 +1894,40 @@ static void ST_overlayDrawer(void)
|
||||||
V_DrawScaledPatch(hudinfo[HUD_GRAVBOOTSICO].x, STRINGY(hudinfo[HUD_GRAVBOOTSICO].y), V_SNAPTORIGHT, gravboots);
|
V_DrawScaledPatch(hudinfo[HUD_GRAVBOOTSICO].x, STRINGY(hudinfo[HUD_GRAVBOOTSICO].y), V_SNAPTORIGHT, gravboots);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!(multiplayer && demo.playback))
|
if (cv_showviewpointtext.value)
|
||||||
{
|
{
|
||||||
if(!P_IsLocalPlayer(stplyr))
|
if (!(multiplayer && demo.playback))
|
||||||
{
|
{
|
||||||
/*char name[MAXPLAYERNAME+1];
|
if(!P_IsLocalPlayer(stplyr))
|
||||||
// shorten the name if its more than twelve characters.
|
{
|
||||||
strlcpy(name, player_names[stplyr-players], 13);*/
|
/*char name[MAXPLAYERNAME+1];
|
||||||
|
// shorten the name if its more than twelve characters.
|
||||||
|
strlcpy(name, player_names[stplyr-players], 13);*/
|
||||||
|
|
||||||
// Show name of player being displayed
|
// Show name of player being displayed
|
||||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-40, 0, M_GetText("Viewpoint:"));
|
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-40, 0, M_GetText("VIEWPOINT:"));
|
||||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, V_ALLOWLOWERCASE, player_names[stplyr-players]);
|
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, V_ALLOWLOWERCASE, player_names[stplyr-players]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
else if (!demo.title)
|
||||||
else if (!demo.title)
|
{
|
||||||
{
|
if (!splitscreen)
|
||||||
|
{
|
||||||
|
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-40, V_HUDTRANSHALF, M_GetText("VIEWPOINT:"));
|
||||||
|
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, V_HUDTRANSHALF|V_ALLOWLOWERCASE, player_names[stplyr-players]);
|
||||||
|
}
|
||||||
|
else if (splitscreen == 1)
|
||||||
|
{
|
||||||
|
char name[MAXPLAYERNAME+12];
|
||||||
|
|
||||||
if (!splitscreen)
|
INT32 y = (stplyr == &players[displayplayers[0]]) ? 4 : BASEVIDHEIGHT/2-12;
|
||||||
{
|
sprintf(name, "VIEWPOINT: %s", player_names[stplyr-players]);
|
||||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-40, V_HUDTRANSHALF, M_GetText("Viewpoint:"));
|
V_DrawRightAlignedThinString(BASEVIDWIDTH-40, y, V_HUDTRANSHALF|V_ALLOWLOWERCASE|K_calcSplitFlags(V_SNAPTOTOP|V_SNAPTOBOTTOM|V_SNAPTORIGHT), name);
|
||||||
V_DrawCenteredString((BASEVIDWIDTH/2), BASEVIDHEIGHT-32, V_HUDTRANSHALF|V_ALLOWLOWERCASE, player_names[stplyr-players]);
|
}
|
||||||
}
|
else if (splitscreen)
|
||||||
else if (splitscreen == 1)
|
{
|
||||||
{
|
V_DrawCenteredThinString((vid.width/vid.dupx)/4, BASEVIDHEIGHT/2 - 12, V_HUDTRANSHALF|V_ALLOWLOWERCASE|K_calcSplitFlags(V_SNAPTOBOTTOM|V_SNAPTOLEFT), player_names[stplyr-players]);
|
||||||
char name[MAXPLAYERNAME+12];
|
}
|
||||||
|
|
||||||
INT32 y = (stplyr == &players[displayplayers[0]]) ? 4 : BASEVIDHEIGHT/2-12;
|
|
||||||
sprintf(name, "VIEWPOINT: %s", player_names[stplyr-players]);
|
|
||||||
V_DrawRightAlignedThinString(BASEVIDWIDTH-40, y, V_HUDTRANSHALF|V_ALLOWLOWERCASE|K_calcSplitFlags(V_SNAPTOTOP|V_SNAPTOBOTTOM|V_SNAPTORIGHT), name);
|
|
||||||
}
|
|
||||||
else if (splitscreen)
|
|
||||||
{
|
|
||||||
V_DrawCenteredThinString((vid.width/vid.dupx)/4, BASEVIDHEIGHT/2 - 12, V_HUDTRANSHALF|V_ALLOWLOWERCASE|K_calcSplitFlags(V_SNAPTOBOTTOM|V_SNAPTOLEFT), player_names[stplyr-players]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue