mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-01-30 04:50:55 +00:00
Merge branch 'master' of https://git.magicalgirl.moe/KartKrew/Kart.git into itemdrop
# Conflicts: # src/dehacked.c # src/info.c # src/info.h
This commit is contained in:
commit
659810cd81
14 changed files with 305 additions and 232 deletions
|
@ -4791,39 +4791,7 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
"S_SIGN18",
|
||||
"S_SIGN19",
|
||||
"S_SIGN20",
|
||||
"S_SIGN21",
|
||||
"S_SIGN22",
|
||||
"S_SIGN23",
|
||||
"S_SIGN24",
|
||||
"S_SIGN25",
|
||||
"S_SIGN26",
|
||||
"S_SIGN27",
|
||||
"S_SIGN28",
|
||||
"S_SIGN29",
|
||||
"S_SIGN30",
|
||||
"S_SIGN31",
|
||||
"S_SIGN32",
|
||||
"S_SIGN33",
|
||||
"S_SIGN34",
|
||||
"S_SIGN35",
|
||||
"S_SIGN36",
|
||||
"S_SIGN37",
|
||||
"S_SIGN38",
|
||||
"S_SIGN39",
|
||||
"S_SIGN40",
|
||||
"S_SIGN41",
|
||||
"S_SIGN42",
|
||||
"S_SIGN43",
|
||||
"S_SIGN44",
|
||||
"S_SIGN45",
|
||||
"S_SIGN46",
|
||||
"S_SIGN47",
|
||||
"S_SIGN48",
|
||||
"S_SIGN49",
|
||||
"S_SIGN50",
|
||||
"S_SIGN51",
|
||||
"S_SIGN52", // Eggman
|
||||
"S_SIGN53",
|
||||
"S_SIGN_END",
|
||||
|
||||
// Steam Riser
|
||||
"S_STEAM1",
|
||||
|
@ -6239,6 +6207,19 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
|
|||
|
||||
"S_ITEMICON",
|
||||
|
||||
// Signpost sparkles
|
||||
"S_SIGNSPARK1",
|
||||
"S_SIGNSPARK2",
|
||||
"S_SIGNSPARK3",
|
||||
"S_SIGNSPARK4",
|
||||
"S_SIGNSPARK5",
|
||||
"S_SIGNSPARK6",
|
||||
"S_SIGNSPARK7",
|
||||
"S_SIGNSPARK8",
|
||||
"S_SIGNSPARK9",
|
||||
"S_SIGNSPARK10",
|
||||
"S_SIGNSPARK11",
|
||||
|
||||
// Drift Sparks
|
||||
"S_DRIFTSPARK_A1",
|
||||
"S_DRIFTSPARK_A2",
|
||||
|
@ -7240,6 +7221,8 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
|
|||
"MT_RANDOMITEMPOP",
|
||||
"MT_FLOATINGITEM",
|
||||
|
||||
"MT_SIGNSPARKLE",
|
||||
|
||||
"MT_FASTLINE",
|
||||
"MT_FASTDUST",
|
||||
"MT_BOOSTFLAME",
|
||||
|
@ -8090,6 +8073,18 @@ struct {
|
|||
{"SKSSKID",SKSSKID},
|
||||
{"SKSGASP",SKSGASP},
|
||||
{"SKSJUMP",SKSJUMP},
|
||||
// SRB2kart
|
||||
{"SKSKWIN",SKSKWIN}, // Win quote
|
||||
{"SKSKLOSE",SKSKLOSE}, // Lose quote
|
||||
{"SKSKPAN1",SKSKPAN1}, // Pain
|
||||
{"SKSKPAN2",SKSKPAN2},
|
||||
{"SKSKATK1",SKSKATK1}, // Offense item taunt
|
||||
{"SKSKATK2",SKSKATK2},
|
||||
{"SKSKBST1",SKSKBST1}, // Boost item taunt
|
||||
{"SKSKBST2",SKSKBST2},
|
||||
{"SKSKSLOW",SKSKSLOW}, // Overtake taunt
|
||||
{"SKSKHITM",SKSKHITM}, // Hit confirm taunt
|
||||
{"SKSKPOWR",SKSKPOWR}, // Power item taunt
|
||||
|
||||
// 3D Floor/Fake Floor/FOF/whatever flags
|
||||
{"FF_EXISTS",FF_EXISTS}, ///< Always set, to check for validity.
|
||||
|
|
|
@ -413,6 +413,8 @@ extern UINT16 extralifetics;
|
|||
// SRB2kart
|
||||
extern tic_t introtime;
|
||||
extern tic_t starttime;
|
||||
extern tic_t raceexittime;
|
||||
extern tic_t battleexittime;
|
||||
extern INT32 hyudorotime;
|
||||
extern INT32 stealtime;
|
||||
extern INT32 sneakertime;
|
||||
|
|
|
@ -308,8 +308,8 @@ static void F_IntroDrawScene(void)
|
|||
{
|
||||
// Need to use M_Random otherwise it always uses the same sound
|
||||
INT32 rskin = M_RandomKey(numskins);
|
||||
UINT8 rtaunt = M_RandomKey(4);
|
||||
sfxenum_t rsound = skins[rskin].soundsid[SKSPLTNT1+rtaunt];
|
||||
UINT8 rtaunt = M_RandomKey(2);
|
||||
sfxenum_t rsound = skins[rskin].soundsid[SKSKBST1+rtaunt];
|
||||
S_StartSound(NULL, rsound);
|
||||
}
|
||||
background = W_CachePatchName("KARTKREW", PU_CACHE);
|
||||
|
|
|
@ -209,6 +209,8 @@ UINT16 extralifetics = 4*TICRATE;
|
|||
// SRB2kart
|
||||
tic_t introtime = 108+5; // plus 5 for white fade
|
||||
tic_t starttime = 6*TICRATE + (3*TICRATE/4);
|
||||
tic_t raceexittime = 5*TICRATE + (2*TICRATE/3);
|
||||
tic_t battleexittime = 8*TICRATE;
|
||||
INT32 hyudorotime = 7*TICRATE;
|
||||
INT32 stealtime = TICRATE/2;
|
||||
INT32 sneakertime = TICRATE + (TICRATE/3);
|
||||
|
|
113
src/info.c
113
src/info.c
|
@ -55,12 +55,12 @@ char sprnames[NUMSPRITES + 1][5] =
|
|||
"GWLR","SRBA","SRBB","SRBC","SRBD","SRBE","SRBF","SRBG","SRBH","SRBI",
|
||||
"SRBJ","SRBK","SRBL","SRBM","SRBN","SRBO",
|
||||
//SRB2kart Sprites
|
||||
"SPRG","BSPR","RNDM","RPOP","FAST","DSHR","BOST","BOSM","KFRE","KINV",
|
||||
"KINF","WIPD","DRIF","DUST","FITM","BANA","ORBN","JAWZ","SSMN","KRBM",
|
||||
"BHOG","BHBM","BLIG","LIGH","THNS","SINK","SITR","KBLN","DEZL","POKE",
|
||||
"AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO","CRAB",
|
||||
"SHAD","BRNG","BUMP","FLEN","CLAS","PSHW","ISTA","ISTB","ARRO","ITEM",
|
||||
"ITMO","ITMI","ITMN","WANT","PBOM","RETI","AIDU","VIEW"
|
||||
"SPRG","BSPR","RNDM","RPOP","SGNS","FAST","DSHR","BOST","BOSM","KFRE",
|
||||
"KINV","KINF","WIPD","DRIF","DUST","FITM","BANA","ORBN","JAWZ","SSMN",
|
||||
"KRBM","BHOG","BHBM","BLIG","LIGH","THNS","SINK","SITR","KBLN","DEZL",
|
||||
"POKE","AUDI","DECO","DOOD","SNES","GBAS","SPRS","BUZB","CHOM","SACO",
|
||||
"CRAB","SHAD","BRNG","BUMP","FLEN","CLAS","PSHW","ISTA","ISTB","ARRO",
|
||||
"ITEM","ITMO","ITMI","ITMN","WANT","PBOM","RETI","AIDU","VIEW"
|
||||
};
|
||||
|
||||
// Doesn't work with g++, needs actionf_p1 (don't modify this comment)
|
||||
|
@ -175,14 +175,15 @@ state_t states[NUMSTATES] =
|
|||
{SPR_NULL, 0, -1, {NULL}, 0, 0, S_OBJPLACE_DUMMY}, //S_OBJPLACE_DUMMY
|
||||
|
||||
// 1-Up Box Sprites (uses player sprite)
|
||||
{SPR_PLAY, 35, 2, {NULL}, 0, 16, S_PLAY_BOX2}, // S_PLAY_BOX1
|
||||
// Kart: default to signpost just to ensure there are no missing sprite errors...
|
||||
{SPR_PLAY, 24, 2, {NULL}, 0, 16, S_PLAY_BOX2}, // S_PLAY_BOX1
|
||||
{SPR_NULL, 0, 1, {NULL}, 0, 0, S_PLAY_BOX1}, // S_PLAY_BOX2
|
||||
{SPR_PLAY, 35, 4, {NULL}, 0, 4, S_PLAY_ICON2}, // S_PLAY_ICON1
|
||||
{SPR_PLAY, 24, 4, {NULL}, 0, 4, S_PLAY_ICON2}, // S_PLAY_ICON1
|
||||
{SPR_NULL, 0, 12, {NULL}, 0, 0, S_PLAY_ICON3}, // S_PLAY_ICON2
|
||||
{SPR_PLAY, 35, 18, {NULL}, 0, 4, S_NULL}, // S_PLAY_ICON3
|
||||
{SPR_PLAY, 24, 18, {NULL}, 0, 4, S_NULL}, // S_PLAY_ICON3
|
||||
|
||||
// Level end sign (uses player sprite)
|
||||
{SPR_PLAY, 34, 1, {NULL}, 0, 24, S_PLAY_SIGN}, // S_PLAY_SIGN
|
||||
{SPR_PLAY, 24, 1, {NULL}, 0, 24, S_PLAY_SIGN}, // S_PLAY_SIGN
|
||||
|
||||
// Blue Crawla
|
||||
{SPR_POSS, 0, 5, {A_Look}, 0, 0, S_POSS_STND}, // S_POSS_STND
|
||||
|
@ -1043,56 +1044,24 @@ state_t states[NUMSTATES] =
|
|||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN2}, // S_SIGN1
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN3}, // S_SIGN2
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN4}, // S_SIGN3
|
||||
{SPR_SIGN, 5, 1, {NULL}, 0, 0, S_SIGN5}, // S_SIGN4
|
||||
{SPR_SIGN, 3, 1, {NULL}, 0, 0, S_SIGN5}, // S_SIGN4
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN6}, // S_SIGN5
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN7}, // S_SIGN6
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN8}, // S_SIGN7
|
||||
{SPR_SIGN, 3, 1, {NULL}, 0, 0, S_SIGN9}, // S_SIGN8
|
||||
{SPR_SIGN, 4, 1, {NULL}, 0, 0, S_SIGN9}, // S_SIGN8
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN10}, // S_SIGN9
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN11}, // S_SIGN10
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN12}, // S_SIGN11
|
||||
{SPR_SIGN, 4, 1, {NULL}, 0, 0, S_SIGN13}, // S_SIGN12
|
||||
{SPR_SIGN, 5, 1, {NULL}, 0, 0, S_SIGN13}, // S_SIGN12
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN14}, // S_SIGN13
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN15}, // S_SIGN14
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN16}, // S_SIGN15
|
||||
{SPR_SIGN, 3, 1, {NULL}, 0, 0, S_SIGN17}, // S_SIGN16
|
||||
{SPR_SIGN, 6, 1, {NULL}, 0, 0, S_SIGN17}, // S_SIGN16
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN18}, // S_SIGN17
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN19}, // S_SIGN18
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN20}, // S_SIGN19
|
||||
{SPR_SIGN, 6, 1, {NULL}, 0, 0, S_SIGN21}, // S_SIGN20
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN22}, // S_SIGN21
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN23}, // S_SIGN22
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN24}, // S_SIGN23
|
||||
{SPR_SIGN, 3, 1, {NULL}, 0, 0, S_SIGN25}, // S_SIGN24
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN26}, // S_SIGN25
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN27}, // S_SIGN26
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN28}, // S_SIGN27
|
||||
{SPR_SIGN, 5, 1, {NULL}, 0, 0, S_SIGN29}, // S_SIGN28
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN30}, // S_SIGN29
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN31}, // S_SIGN30
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN32}, // S_SIGN31
|
||||
{SPR_SIGN, 3, 1, {NULL}, 0, 0, S_SIGN33}, // S_SIGN32
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN34}, // S_SIGN33
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN35}, // S_SIGN34
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN36}, // S_SIGN35
|
||||
{SPR_SIGN, 4, 1, {NULL}, 0, 0, S_SIGN37}, // S_SIGN36
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN38}, // S_SIGN37
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN39}, // S_SIGN38
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN40}, // S_SIGN39
|
||||
{SPR_SIGN, 3, 1, {NULL}, 0, 0, S_SIGN41}, // S_SIGN40
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN42}, // S_SIGN41
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN43}, // S_SIGN42
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN44}, // S_SIGN43
|
||||
{SPR_SIGN, 6, 1, {NULL}, 0, 0, S_SIGN45}, // S_SIGN44
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN46}, // S_SIGN45
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN47}, // S_SIGN46
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN48}, // S_SIGN47
|
||||
{SPR_SIGN, 3, 1, {NULL}, 0, 0, S_SIGN49}, // S_SIGN48
|
||||
{SPR_SIGN, 0, 1, {NULL}, 0, 0, S_SIGN50}, // S_SIGN49
|
||||
{SPR_SIGN, 1, 1, {NULL}, 0, 0, S_SIGN51}, // S_SIGN50
|
||||
{SPR_SIGN, 2, 1, {NULL}, 0, 0, S_SIGN53}, // S_SIGN51
|
||||
{SPR_SIGN, 3, -1, {NULL}, 0, 0, S_NULL}, // S_SIGN52 Eggman
|
||||
{SPR_SIGN, 7, -1, {A_SignPlayer}, 0, 0, S_NULL}, // S_SIGN53 Blank
|
||||
{SPR_SIGN, 7, 1, {NULL}, 0, 0, S_SIGN1}, // S_SIGN20
|
||||
{SPR_SIGN, 8, -1, {A_SignPlayer}, 0, 0, S_NULL}, // S_SIGN_END
|
||||
|
||||
// Steam Riser
|
||||
{SPR_STEM, 0, 2, {A_SetSolidSteam}, 0, 0, S_STEAM2}, // S_STEAM1
|
||||
|
@ -2566,8 +2535,21 @@ state_t states[NUMSTATES] =
|
|||
{SPR_RPOP, FF_FULLBRIGHT|2, 5, {NULL}, 0, 0, S_RANDOMITEMPOP4}, // S_RANDOMITEMPOP3
|
||||
{SPR_RPOP, FF_FULLBRIGHT|3, 5, {NULL}, 0, 0, S_NULL}, // S_RANDOMITEMPOP4
|
||||
|
||||
|
||||
{SPR_NULL, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_ITEMICON
|
||||
|
||||
{SPR_SGNS, FF_FULLBRIGHT, 1, {NULL}, 0, 0, S_SIGNSPARK2}, // S_SIGNSPARK1
|
||||
{SPR_SGNS, FF_FULLBRIGHT|1, 1, {NULL}, 0, 0, S_SIGNSPARK3}, // S_SIGNSPARK2
|
||||
{SPR_SGNS, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_SIGNSPARK4}, // S_SIGNSPARK3
|
||||
{SPR_SGNS, FF_FULLBRIGHT|3, 1, {NULL}, 0, 0, S_SIGNSPARK5}, // S_SIGNSPARK4
|
||||
{SPR_SGNS, FF_FULLBRIGHT|4, 1, {NULL}, 0, 0, S_SIGNSPARK6}, // S_SIGNSPARK5
|
||||
{SPR_SGNS, FF_FULLBRIGHT|5, 1, {NULL}, 0, 0, S_SIGNSPARK7}, // S_SIGNSPARK6
|
||||
{SPR_SGNS, FF_FULLBRIGHT|6, 1, {NULL}, 0, 0, S_SIGNSPARK8}, // S_SIGNSPARK7
|
||||
{SPR_SGNS, FF_FULLBRIGHT|7, 1, {NULL}, 0, 0, S_SIGNSPARK9}, // S_SIGNSPARK8
|
||||
{SPR_SGNS, FF_FULLBRIGHT|8, 1, {NULL}, 0, 0, S_SIGNSPARK10}, // S_SIGNSPARK9
|
||||
{SPR_SGNS, FF_FULLBRIGHT|3, 1, {NULL}, 0, 0, S_SIGNSPARK11}, // S_SIGNSPARK10
|
||||
{SPR_SGNS, FF_FULLBRIGHT|2, 1, {NULL}, 0, 0, S_NULL}, // S_SIGNSPARK11
|
||||
|
||||
{SPR_DRIF, FF_FULLBRIGHT|2, 2, {NULL}, 0, 0, S_DRIFTSPARK_A2}, // S_DRIFTSPARK_A1
|
||||
{SPR_DRIF, FF_FULLBRIGHT|FF_TRANS20|1, 1, {NULL}, 0, 0, S_DRIFTSPARK_A3}, // S_DRIFTSPARK_A2
|
||||
{SPR_DRIF, FF_FULLBRIGHT|FF_TRANS50, 1, {NULL}, 0, 0, S_NULL}, // S_DRIFTSPARK_A3
|
||||
|
@ -5811,12 +5793,12 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
|
||||
{ // MT_SIGN
|
||||
501, // doomednum
|
||||
S_SIGN52, // spawnstate
|
||||
S_INVISIBLE, // spawnstate
|
||||
1000, // spawnhealth
|
||||
S_PLAY_SIGN, // seestate
|
||||
sfx_lvpass, // seesound
|
||||
sfx_s3kb8, // seesound
|
||||
8, // reactiontime
|
||||
sfx_None, // attacksound
|
||||
sfx_s3k7e, // attacksound
|
||||
S_NULL, // painstate
|
||||
0, // painchance
|
||||
sfx_None, // painsound
|
||||
|
@ -5832,7 +5814,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
16, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOCLIP|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||
MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_DONTENCOREMAP, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
|
@ -14444,6 +14426,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
|||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_SIGNSPARKLE
|
||||
-1, // doomednum
|
||||
S_SIGNSPARK1, // spawnstate
|
||||
1, // 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
|
||||
14*FRACUNIT, // radius
|
||||
14*FRACUNIT, // height
|
||||
0, // display offset
|
||||
100, // mass
|
||||
0, // damage
|
||||
sfx_None, // activesound
|
||||
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_NOGRAVITY|MF_SCENERY|MF_DONTENCOREMAP, // flags
|
||||
S_NULL // raisestate
|
||||
},
|
||||
|
||||
{ // MT_FASTLINE
|
||||
-1, // doomednum
|
||||
S_FASTLINE1, // spawnstate
|
||||
|
|
50
src/info.h
50
src/info.h
|
@ -582,6 +582,7 @@ typedef enum sprite
|
|||
|
||||
SPR_RNDM, // Random Item Box
|
||||
SPR_RPOP, // Random Item Box Pop
|
||||
SPR_SGNS, // Signpost sparkle
|
||||
SPR_FAST, // Speed boost trail
|
||||
SPR_DSHR, // Speed boost dust release
|
||||
SPR_BOST, // Sneaker booster flame
|
||||
|
@ -1638,39 +1639,7 @@ typedef enum state
|
|||
S_SIGN18,
|
||||
S_SIGN19,
|
||||
S_SIGN20,
|
||||
S_SIGN21,
|
||||
S_SIGN22,
|
||||
S_SIGN23,
|
||||
S_SIGN24,
|
||||
S_SIGN25,
|
||||
S_SIGN26,
|
||||
S_SIGN27,
|
||||
S_SIGN28,
|
||||
S_SIGN29,
|
||||
S_SIGN30,
|
||||
S_SIGN31,
|
||||
S_SIGN32,
|
||||
S_SIGN33,
|
||||
S_SIGN34,
|
||||
S_SIGN35,
|
||||
S_SIGN36,
|
||||
S_SIGN37,
|
||||
S_SIGN38,
|
||||
S_SIGN39,
|
||||
S_SIGN40,
|
||||
S_SIGN41,
|
||||
S_SIGN42,
|
||||
S_SIGN43,
|
||||
S_SIGN44,
|
||||
S_SIGN45,
|
||||
S_SIGN46,
|
||||
S_SIGN47,
|
||||
S_SIGN48,
|
||||
S_SIGN49,
|
||||
S_SIGN50,
|
||||
S_SIGN51,
|
||||
S_SIGN52, // Eggman
|
||||
S_SIGN53,
|
||||
S_SIGN_END,
|
||||
|
||||
// Steam Riser
|
||||
S_STEAM1,
|
||||
|
@ -3086,6 +3055,19 @@ typedef enum state
|
|||
|
||||
S_ITEMICON,
|
||||
|
||||
// Signpost sparkles
|
||||
S_SIGNSPARK1,
|
||||
S_SIGNSPARK2,
|
||||
S_SIGNSPARK3,
|
||||
S_SIGNSPARK4,
|
||||
S_SIGNSPARK5,
|
||||
S_SIGNSPARK6,
|
||||
S_SIGNSPARK7,
|
||||
S_SIGNSPARK8,
|
||||
S_SIGNSPARK9,
|
||||
S_SIGNSPARK10,
|
||||
S_SIGNSPARK11,
|
||||
|
||||
// Drift Sparks
|
||||
S_DRIFTSPARK_A1,
|
||||
S_DRIFTSPARK_A2,
|
||||
|
@ -4104,6 +4086,8 @@ typedef enum mobj_type
|
|||
MT_RANDOMITEMPOP,
|
||||
MT_FLOATINGITEM,
|
||||
|
||||
MT_SIGNSPARKLE,
|
||||
|
||||
MT_FASTLINE,
|
||||
MT_FASTDUST,
|
||||
MT_BOOSTFLAME,
|
||||
|
|
124
src/k_kart.c
124
src/k_kart.c
|
@ -124,17 +124,17 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] =
|
|||
SKINCOLOR_TEA,8, // 10 // SKINCOLOR_SALMON
|
||||
SKINCOLOR_PISTACHIO,8, // 11 // SKINCOLOR_PINK
|
||||
SKINCOLOR_MOSS,8, // 12 // SKINCOLOR_ROSE
|
||||
SKINCOLOR_MINT,10, // 13 // SKINCOLOR_RASPBERRY
|
||||
SKINCOLOR_GREEN,8, // 14 // SKINCOLOR_RED
|
||||
SKINCOLOR_MINT,8, // 13 // SKINCOLOR_RASPBERRY
|
||||
SKINCOLOR_GREEN,6, // 14 // SKINCOLOR_RED
|
||||
SKINCOLOR_SAPPHIRE,8, // 15 // SKINCOLOR_RUBY
|
||||
SKINCOLOR_PINETREE,6, // 16 // SKINCOLOR_CRIMSON
|
||||
SKINCOLOR_MUSTARD,6, // 17 // SKINCOLOR_KETCHUP
|
||||
SKINCOLOR_MUSTARD,10, // 17 // SKINCOLOR_KETCHUP
|
||||
SKINCOLOR_DUSK,8, // 18 // SKINCOLOR_DAWN
|
||||
SKINCOLOR_PERIWINKLE,8, // 19 // SKINCOLOR_CREAMSICLE
|
||||
SKINCOLOR_BLUE,8, // 20 // SKINCOLOR_ORANGE
|
||||
SKINCOLOR_BLUEBERRY,8, // 21 // SKINCOLOR_PUMPKIN
|
||||
SKINCOLOR_NAVY,8, // 22 // SKINCOLOR_ROSEWOOD
|
||||
SKINCOLOR_JET,6, // 23 // SKINCOLOR_BURGUNDY
|
||||
SKINCOLOR_NAVY,6, // 22 // SKINCOLOR_ROSEWOOD
|
||||
SKINCOLOR_JET,8, // 23 // SKINCOLOR_BURGUNDY
|
||||
SKINCOLOR_LIME,8, // 24 // SKINCOLOR_TANGERINE
|
||||
SKINCOLOR_CYAN,8, // 25 // SKINCOLOR_PEACH
|
||||
SKINCOLOR_CERULEAN,8, // 26 // SKINCOLOR_CARAMEL
|
||||
|
@ -144,36 +144,36 @@ const UINT8 KartColor_Opposite[MAXSKINCOLORS*2] =
|
|||
SKINCOLOR_KETCHUP,8, // 30 // SKINCOLOR_MUSTARD
|
||||
SKINCOLOR_TEAL,8, // 31 // SKINCOLOR_OLIVE
|
||||
SKINCOLOR_ROBOHOOD,8, // 32 // SKINCOLOR_VOMIT
|
||||
SKINCOLOR_LAVENDER,8, // 33 // SKINCOLOR_GARDEN
|
||||
SKINCOLOR_LAVENDER,6, // 33 // SKINCOLOR_GARDEN
|
||||
SKINCOLOR_TANGERINE,8, // 34 // SKINCOLOR_LIME
|
||||
SKINCOLOR_POMEGRANATE,8, // 35 // SKINCOLOR_DREAM
|
||||
SKINCOLOR_SALMON,8, // 36 // SKINCOLOR_TEA
|
||||
SKINCOLOR_PINK,8, // 37 // SKINCOLOR_PISTACHIO
|
||||
SKINCOLOR_PINK,6, // 37 // SKINCOLOR_PISTACHIO
|
||||
SKINCOLOR_VOMIT,8, // 38 // SKINCOLOR_ROBOHOOD
|
||||
SKINCOLOR_ROSE,8, // 39 // SKINCOLOR_MOSS
|
||||
SKINCOLOR_RASPBERRY,6, // 40 // SKINCOLOR_MINT
|
||||
SKINCOLOR_RASPBERRY,8, // 40 // SKINCOLOR_MINT
|
||||
SKINCOLOR_RED,8, // 41 // SKINCOLOR_GREEN
|
||||
SKINCOLOR_CRIMSON,8, // 42 // SKINCOLOR_PINETREE
|
||||
SKINCOLOR_PURPLE,8, // 43 // SKINCOLOR_EMERALD
|
||||
SKINCOLOR_BYZANTIUM,6, // 44 // SKINCOLOR_SWAMP
|
||||
SKINCOLOR_BYZANTIUM,8, // 44 // SKINCOLOR_SWAMP
|
||||
SKINCOLOR_YELLOW,8, // 45 // SKINCOLOR_AQUA
|
||||
SKINCOLOR_OLIVE,8, // 46 // SKINCOLOR_TEAL
|
||||
SKINCOLOR_PEACH,8, // 47 // SKINCOLOR_CYAN
|
||||
SKINCOLOR_LILAC,6, // 48 // SKINCOLOR_JAWZ
|
||||
SKINCOLOR_LILAC,10, // 48 // SKINCOLOR_JAWZ
|
||||
SKINCOLOR_CARAMEL,8, // 49 // SKINCOLOR_CERULEAN
|
||||
SKINCOLOR_ROSEWOOD,8, // 50 // SKINCOLOR_NAVY
|
||||
SKINCOLOR_GOLD,8, // 51 // SKINCOLOR_SLATE
|
||||
SKINCOLOR_BRONZE,8, // 52 // SKINCOLOR_STEEL
|
||||
SKINCOLOR_BURGUNDY,6, // 53 // SKINCOLOR_JET
|
||||
SKINCOLOR_GOLD,10, // 51 // SKINCOLOR_SLATE
|
||||
SKINCOLOR_BRONZE,10, // 52 // SKINCOLOR_STEEL
|
||||
SKINCOLOR_BURGUNDY,8, // 53 // SKINCOLOR_JET
|
||||
SKINCOLOR_CREAMSICLE,8, // 54 // SKINCOLOR_PERIWINKLE
|
||||
SKINCOLOR_ORANGE,8, // 55 // SKINCOLOR_BLUE
|
||||
SKINCOLOR_RUBY,8, // 56 // SKINCOLOR_SAPPHIRE
|
||||
SKINCOLOR_RUBY,6, // 56 // SKINCOLOR_SAPPHIRE
|
||||
SKINCOLOR_PUMPKIN,8, // 57 // SKINCOLOR_BLUEBERRY
|
||||
SKINCOLOR_DAWN,8, // 58 // SKINCOLOR_DUSK
|
||||
SKINCOLOR_DAWN,6, // 58 // SKINCOLOR_DUSK
|
||||
SKINCOLOR_EMERALD,8, // 59 // SKINCOLOR_PURPLE
|
||||
SKINCOLOR_GARDEN,8, // 60 // SKINCOLOR_LAVENDER
|
||||
SKINCOLOR_GARDEN,6, // 60 // SKINCOLOR_LAVENDER
|
||||
SKINCOLOR_SWAMP,8, // 61 // SKINCOLOR_BYZANTIUM
|
||||
SKINCOLOR_DREAM,6, // 62 // SKINCOLOR_POMEGRANATE
|
||||
SKINCOLOR_DREAM,8, // 62 // SKINCOLOR_POMEGRANATE
|
||||
SKINCOLOR_JAWZ,6 // 63 // SKINCOLOR_LILAC
|
||||
};
|
||||
|
||||
|
@ -1466,32 +1466,36 @@ static void K_RegularVoiceTimers(player_t *player)
|
|||
player->kartstuff[k_tauntvoices] = 4*TICRATE;
|
||||
}
|
||||
|
||||
static void K_PlayTauntSound(mobj_t *source)
|
||||
static void K_PlayAttackTaunt(mobj_t *source)
|
||||
{
|
||||
#if 1
|
||||
sfxenum_t pick = P_RandomKey(4); // Gotta roll the RNG every time this is called for sync reasons
|
||||
sfxenum_t pick = P_RandomKey(2); // Gotta roll the RNG every time this is called for sync reasons
|
||||
boolean tasteful = (!source->player || !source->player->kartstuff[k_tauntvoices]);
|
||||
|
||||
if (cv_kartvoices.value && (tasteful || cv_kartvoices.value == 2))
|
||||
S_StartSound(source, sfx_taunt1+pick);
|
||||
S_StartSound(source, sfx_kattk1+pick);
|
||||
|
||||
if (!tasteful)
|
||||
return;
|
||||
|
||||
K_TauntVoiceTimers(source->player);
|
||||
#else
|
||||
if (source->player && source->player->kartstuff[k_tauntvoices]) // Prevents taunt sounds from playing every time the button is pressed
|
||||
}
|
||||
|
||||
static void K_PlayBoostTaunt(mobj_t *source)
|
||||
{
|
||||
sfxenum_t pick = P_RandomKey(2); // Gotta roll the RNG every time this is called for sync reasons
|
||||
boolean tasteful = (!source->player || !source->player->kartstuff[k_tauntvoices]);
|
||||
|
||||
if (cv_kartvoices.value && (tasteful || cv_kartvoices.value == 2))
|
||||
S_StartSound(source, sfx_kbost1+pick);
|
||||
|
||||
if (!tasteful)
|
||||
return;
|
||||
|
||||
S_StartSound(source, sfx_taunt1+P_RandomKey(4));
|
||||
|
||||
K_TauntVoiceTimers(source->player);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void K_PlayOvertakeSound(mobj_t *source)
|
||||
{
|
||||
#if 1
|
||||
boolean tasteful = (!source->player || !source->player->kartstuff[k_voices]);
|
||||
|
||||
if (!G_RaceGametype()) // Only in race
|
||||
|
@ -1502,33 +1506,28 @@ static void K_PlayOvertakeSound(mobj_t *source)
|
|||
return;
|
||||
|
||||
if (cv_kartvoices.value && (tasteful || cv_kartvoices.value == 2))
|
||||
S_StartSound(source, sfx_slow);
|
||||
S_StartSound(source, sfx_kslow);
|
||||
|
||||
if (!tasteful)
|
||||
return;
|
||||
|
||||
K_RegularVoiceTimers(source->player);
|
||||
#else
|
||||
if (source->player && source->player->kartstuff[k_voices]) // Prevents taunt sounds from playing every time the button is pressed
|
||||
return;
|
||||
|
||||
if (!G_RaceGametype()) // Only in race
|
||||
return;
|
||||
|
||||
// 4 seconds from before race begins, 10 seconds afterwards
|
||||
if (leveltime < starttime+(10*TICRATE))
|
||||
return;
|
||||
|
||||
S_StartSound(source, sfx_slow);
|
||||
|
||||
K_RegularVoiceTimers(source->player);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void K_PlayHitEmSound(mobj_t *source)
|
||||
{
|
||||
if (cv_kartvoices.value)
|
||||
S_StartSound(source, sfx_hitem);
|
||||
S_StartSound(source, sfx_khitem);
|
||||
else
|
||||
S_StartSound(source, sfx_s1c9); // The only lost gameplay functionality with voices disabled
|
||||
|
||||
K_RegularVoiceTimers(source->player);
|
||||
}
|
||||
|
||||
static void K_PlayPowerGloatSound(mobj_t *source)
|
||||
{
|
||||
if (cv_kartvoices.value)
|
||||
S_StartSound(source, sfx_kgloat);
|
||||
|
||||
K_RegularVoiceTimers(source->player);
|
||||
}
|
||||
|
@ -2945,7 +2944,7 @@ void K_DoSneaker(player_t *player, boolean doPFlag)
|
|||
if (doPFlag)
|
||||
{
|
||||
player->pflags |= PF_ATTACKDOWN;
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayBoostTaunt(player->mo);
|
||||
}
|
||||
|
||||
K_GetKartBoostPower(player);
|
||||
|
@ -2969,8 +2968,6 @@ static void K_DoShrink(player_t *player)
|
|||
&& players[i].kartstuff[k_position] < player->kartstuff[k_position])
|
||||
P_DamageMobj(players[i].mo, player->mo, player->mo, 64);
|
||||
}
|
||||
|
||||
K_PlayTauntSound(player->mo);
|
||||
}
|
||||
|
||||
static void K_DoSPB(player_t *victim, player_t *source)
|
||||
|
@ -4409,7 +4406,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
else if (ATTACK_IS_DOWN && player->kartstuff[k_eggmanheld])
|
||||
{
|
||||
K_ThrowKartItem(player, false, MT_FAKEITEM, -1, 0);
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
player->kartstuff[k_eggmanheld] = 0;
|
||||
K_UpdateHnextList(player, true);
|
||||
}
|
||||
|
@ -4418,6 +4415,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
&& player->kartstuff[k_rocketsneakertimer] > 1)
|
||||
{
|
||||
K_DoSneaker(player, true);
|
||||
K_PlayBoostTaunt(player->mo);
|
||||
player->kartstuff[k_rocketsneakertimer] -= 5;
|
||||
if (player->kartstuff[k_rocketsneakertimer] < 1)
|
||||
player->kartstuff[k_rocketsneakertimer] = 1;
|
||||
|
@ -4434,6 +4432,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO)
|
||||
{
|
||||
K_DoSneaker(player, true);
|
||||
K_PlayBoostTaunt(player->mo);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
}
|
||||
break;
|
||||
|
@ -4442,6 +4441,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
&& player->kartstuff[k_rocketsneakertimer] == 0)
|
||||
{
|
||||
K_DoSneaker(player, true);
|
||||
K_PlayBoostTaunt(player->mo);
|
||||
player->kartstuff[k_rocketsneakertimer] = itemtime;
|
||||
player->kartstuff[k_itemamount]--;
|
||||
}
|
||||
|
@ -4460,7 +4460,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
P_RestoreMusic(player);
|
||||
if (!cv_kartinvinsfx.value && !P_IsLocalPlayer(player))
|
||||
S_StartSound(player->mo, sfx_kinvnc);
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayPowerGloatSound(player->mo);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
}
|
||||
break;
|
||||
|
@ -4471,7 +4471,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
mobj_t *mo;
|
||||
mobj_t *prev = player->mo;
|
||||
|
||||
//K_PlayTauntSound(player->mo);
|
||||
//K_PlayAttackTaunt(player->mo);
|
||||
player->kartstuff[k_itemheld] = 1;
|
||||
S_StartSound(player->mo, sfx_s254);
|
||||
|
||||
|
@ -4496,7 +4496,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld]) // Banana x3 thrown
|
||||
{
|
||||
K_ThrowKartItem(player, false, MT_BANANA, -1, 0);
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
K_UpdateHnextList(player, false);
|
||||
}
|
||||
|
@ -4528,7 +4528,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
mobj_t *mo = NULL;
|
||||
mobj_t *prev = player->mo;
|
||||
|
||||
//K_PlayTauntSound(player->mo);
|
||||
//K_PlayAttackTaunt(player->mo);
|
||||
player->kartstuff[k_itemheld] = 1;
|
||||
S_StartSound(player->mo, sfx_s3k3a);
|
||||
|
||||
|
@ -4556,7 +4556,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld]) // Orbinaut x3 thrown
|
||||
{
|
||||
K_ThrowKartItem(player, true, MT_ORBINAUT, 1, 0);
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
K_UpdateHnextList(player, false);
|
||||
}
|
||||
|
@ -4569,7 +4569,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
mobj_t *mo = NULL;
|
||||
mobj_t *prev = player->mo;
|
||||
|
||||
//K_PlayTauntSound(player->mo);
|
||||
//K_PlayAttackTaunt(player->mo);
|
||||
player->kartstuff[k_itemheld] = 1;
|
||||
S_StartSound(player->mo, sfx_s3k3a);
|
||||
|
||||
|
@ -4599,7 +4599,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
K_ThrowKartItem(player, true, MT_JAWZ, 1, 0);
|
||||
else if (player->kartstuff[k_throwdir] == -1) // Throwing backward gives you a dud that doesn't home in
|
||||
K_ThrowKartItem(player, true, MT_JAWZ_DUD, -1, 0);
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
K_UpdateHnextList(player, false);
|
||||
}
|
||||
|
@ -4624,7 +4624,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
else if (ATTACK_IS_DOWN && player->kartstuff[k_itemheld])
|
||||
{
|
||||
K_ThrowKartItem(player, false, MT_SSMINE, 1, 1);
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
player->kartstuff[k_itemheld] = 0;
|
||||
K_UpdateHnextList(player, true);
|
||||
|
@ -4636,7 +4636,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
player->kartstuff[k_itemamount]--;
|
||||
K_ThrowKartItem(player, true, MT_BALLHOG, 1, 0);
|
||||
S_StartSound(player->mo, sfx_mario7);
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
}
|
||||
break;
|
||||
case KITEM_SPB:
|
||||
|
@ -4674,14 +4674,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
|
||||
player->kartstuff[k_itemamount]--;
|
||||
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
}
|
||||
break;
|
||||
case KITEM_GROW:
|
||||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && NO_HYUDORO
|
||||
&& player->kartstuff[k_growshrinktimer] <= 0) // Grow holds the item box hostage
|
||||
{
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayPowerGloatSound(player->mo);
|
||||
player->mo->scalespeed = FRACUNIT/TICRATE;
|
||||
player->mo->destscale = 3*(mapheaderinfo[gamemap-1]->mobj_scale)/2;
|
||||
if (cv_kartdebugshrink.value && !player->bot)
|
||||
|
@ -4699,6 +4699,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
{
|
||||
K_DoShrink(player);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
K_PlayPowerGloatSound(player->mo);
|
||||
}
|
||||
break;
|
||||
case KITEM_THUNDERSHIELD:
|
||||
|
@ -4713,6 +4714,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
{
|
||||
K_DoThunderShield(player);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
}
|
||||
break;
|
||||
case KITEM_HYUDORO:
|
||||
|
@ -4726,7 +4728,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
if (ATTACK_IS_DOWN && !HOLDING_ITEM && onground && NO_HYUDORO
|
||||
&& !player->kartstuff[k_pogospring])
|
||||
{
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayBoostTaunt(player->mo);
|
||||
K_DoPogoSpring(player->mo, 32<<FRACBITS, false);
|
||||
player->kartstuff[k_pogospring] = 1;
|
||||
player->kartstuff[k_itemamount]--;
|
||||
|
@ -4752,7 +4754,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
else if (ATTACK_IS_DOWN && HOLDING_ITEM && player->kartstuff[k_itemheld]) // Sink thrown
|
||||
{
|
||||
K_ThrowKartItem(player, false, MT_SINK, 1, 2);
|
||||
K_PlayTauntSound(player->mo);
|
||||
K_PlayAttackTaunt(player->mo);
|
||||
player->kartstuff[k_itemamount]--;
|
||||
player->kartstuff[k_itemheld] = 0;
|
||||
K_UpdateHnextList(player, true);
|
||||
|
|
|
@ -715,7 +715,7 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
if (!playeringame[i] || players[i].spectator)
|
||||
continue;
|
||||
|
||||
players[i].exiting = (14*TICRATE)/5 + 1;
|
||||
players[i].exiting = raceexittime+1;
|
||||
}
|
||||
S_StartSound(NULL, sfx_lvpass);
|
||||
}
|
||||
|
|
32
src/p_mobj.c
32
src/p_mobj.c
|
@ -1409,6 +1409,9 @@ fixed_t P_GetMobjGravity(mobj_t *mo)
|
|||
case MT_SINK:
|
||||
gravityadd = FixedMul(gravityadd, 5*FRACUNIT); // Double gravity
|
||||
break;
|
||||
case MT_SIGN:
|
||||
gravityadd /= 8;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -8415,6 +8418,35 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
}
|
||||
}
|
||||
break;
|
||||
case MT_SIGN: // Kart's unique sign behavior
|
||||
if (mobj->movecount)
|
||||
{
|
||||
if (mobj->z <= mobj->movefactor)
|
||||
{
|
||||
P_SetMobjState(mobj, S_SIGN_END);
|
||||
if (mobj->info->attacksound)
|
||||
S_StartSound(mobj, mobj->info->attacksound);
|
||||
mobj->flags |= MF_NOGRAVITY; // ?
|
||||
mobj->flags &= ~MF_NOCLIPHEIGHT;
|
||||
mobj->z = mobj->movefactor;
|
||||
mobj->movecount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
P_SpawnMobj(mobj->x + (P_RandomRange(-48,48)<<FRACBITS),
|
||||
mobj->y + (P_RandomRange(-48,48)<<FRACBITS),
|
||||
mobj->z + (24<<FRACBITS) + (P_RandomRange(-8,8)<<FRACBITS),
|
||||
MT_SIGNSPARKLE);
|
||||
mobj->flags &= ~MF_NOGRAVITY;
|
||||
if (abs(mobj->z - mobj->movefactor) <= 512<<FRACBITS && !mobj->cvmem)
|
||||
{
|
||||
if (mobj->info->seesound)
|
||||
S_StartSound(mobj, mobj->info->seesound);
|
||||
mobj->cvmem = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
//}
|
||||
case MT_TURRET:
|
||||
P_MobjCheckWater(mobj);
|
||||
|
|
41
src/p_spec.c
41
src/p_spec.c
|
@ -3215,6 +3215,9 @@ void P_SetupSignExit(player_t *player)
|
|||
thinker_t *think;
|
||||
INT32 numfound = 0;
|
||||
|
||||
if (player->kartstuff[k_position] != 1)
|
||||
return;
|
||||
|
||||
for (; node; node = node->m_thinglist_next)
|
||||
{
|
||||
thing = node->m_thing;
|
||||
|
@ -3226,8 +3229,11 @@ void P_SetupSignExit(player_t *player)
|
|||
|
||||
P_SetTarget(&thing->target, player->mo);
|
||||
P_SetMobjState(thing, S_SIGN1);
|
||||
if (thing->info->seesound)
|
||||
S_StartSound(thing, thing->info->seesound);
|
||||
|
||||
// SRB2Kart: Set sign spinning variables
|
||||
thing->movefactor = thing->z;
|
||||
thing->z += (768<<FRACBITS) * P_MobjFlip(thing);
|
||||
thing->movecount = 1;
|
||||
|
||||
++numfound;
|
||||
}
|
||||
|
@ -3251,11 +3257,28 @@ void P_SetupSignExit(player_t *player)
|
|||
|
||||
P_SetTarget(&thing->target, player->mo);
|
||||
P_SetMobjState(thing, S_SIGN1);
|
||||
if (thing->info->seesound)
|
||||
S_StartSound(thing, thing->info->seesound);
|
||||
|
||||
// SRB2Kart: Set sign spinning variables
|
||||
thing->movefactor = thing->z;
|
||||
thing->z += (768<<FRACBITS) * P_MobjFlip(thing);
|
||||
thing->movecount = 1;
|
||||
|
||||
++numfound;
|
||||
}
|
||||
|
||||
if (numfound)
|
||||
return;
|
||||
|
||||
// SRB2Kart: FINALLY, add in an alternative if no place is found
|
||||
if (player->mo)
|
||||
{
|
||||
mobj_t *sign = P_SpawnMobj(player->mo->x, player->mo->y, player->mo->z + (768<<FRACBITS), MT_SIGN);
|
||||
|
||||
P_SetTarget(&sign->target, player->mo);
|
||||
P_SetMobjState(sign, S_SIGN1);
|
||||
sign->movefactor = player->mo->floorz;
|
||||
sign->movecount = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -3859,6 +3882,13 @@ DoneSection2:
|
|||
|
||||
player->kartstuff[k_dashpadcooldown] = TICRATE/3;
|
||||
S_StartSound(player->mo, sfx_spdpad);
|
||||
|
||||
{
|
||||
sfxenum_t pick = P_RandomKey(2); // Gotta roll the RNG every time this is called for sync reasons
|
||||
if (cv_kartvoices.value)
|
||||
S_StartSound(player->mo, sfx_kbost1+pick);
|
||||
//K_TauntVoiceTimers(player);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -4237,12 +4267,13 @@ DoneSection2:
|
|||
|
||||
if (player->laps >= (unsigned)cv_numlaps.value)
|
||||
{
|
||||
if (!splitscreen && P_IsLocalPlayer(player))
|
||||
if (P_IsLocalPlayer(player))
|
||||
S_StartSound(NULL, sfx_s3k6a);
|
||||
else if (player->kartstuff[k_position] == 1)
|
||||
S_StartSound(NULL, sfx_s253);
|
||||
|
||||
P_DoPlayerExit(player);
|
||||
P_SetupSignExit(player);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -448,7 +448,7 @@ static inline void P_DoSpecialStageStuff(void)
|
|||
{
|
||||
if (playeringame[i])
|
||||
{
|
||||
players[i].exiting = (14*TICRATE)/5 + 1;
|
||||
players[i].exiting = raceexittime+1;
|
||||
players[i].pflags &= ~PF_GLIDING;
|
||||
}
|
||||
|
||||
|
@ -485,7 +485,7 @@ static inline void P_DoSpecialStageStuff(void)
|
|||
if (playeringame[i])
|
||||
{
|
||||
players[i].mo->momx = players[i].mo->momy = 0;
|
||||
players[i].exiting = (14*TICRATE)/5 + 1;
|
||||
players[i].exiting = raceexittime+1;
|
||||
}
|
||||
|
||||
sstimer = 0;
|
||||
|
|
49
src/p_user.c
49
src/p_user.c
|
@ -673,7 +673,7 @@ static void P_DeNightserizePlayer(player_t *player)
|
|||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
if (playeringame[i] && players[i].pflags & PF_NIGHTSMODE)
|
||||
players[i].nightstime = 1; // force everyone else to fall too.
|
||||
player->exiting = 3*TICRATE;
|
||||
player->exiting = raceexittime+2;
|
||||
stagefailed = true; // NIGHT OVER
|
||||
}
|
||||
|
||||
|
@ -1120,27 +1120,22 @@ void P_PlayLivesJingle(player_t *player)
|
|||
|
||||
void P_PlayRinglossSound(mobj_t *source)
|
||||
{
|
||||
sfxenum_t key = P_RandomKey(4);
|
||||
sfxenum_t key = P_RandomKey(2);
|
||||
if (cv_kartvoices.value)
|
||||
S_StartSound(source, (mariomode) ? sfx_mario8 : sfx_altow1 + key);
|
||||
S_StartSound(source, (mariomode) ? sfx_mario8 : sfx_khurt1 + key);
|
||||
else
|
||||
S_StartSound(source, sfx_slip);
|
||||
}
|
||||
|
||||
void P_PlayDeathSound(mobj_t *source)
|
||||
{
|
||||
sfxenum_t key = P_RandomKey(4);
|
||||
if (cv_kartvoices.value)
|
||||
S_StartSound(source, sfx_altdi1 + key);
|
||||
else
|
||||
S_StartSound(source, sfx_s3k35);
|
||||
S_StartSound(source, sfx_s3k35);
|
||||
}
|
||||
|
||||
void P_PlayVictorySound(mobj_t *source)
|
||||
{
|
||||
sfxenum_t key = P_RandomKey(4);
|
||||
if (cv_kartvoices.value)
|
||||
S_StartSound(source, sfx_victr1 + key);
|
||||
S_StartSound(source, sfx_kwin);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -1738,13 +1733,25 @@ void P_DoPlayerExit(player_t *player)
|
|||
|
||||
if (cv_kartvoices.value)
|
||||
{
|
||||
if (K_IsPlayerLosing(player))
|
||||
S_StartSound(player->mo, sfx_klose);
|
||||
if (P_IsLocalPlayer(player))
|
||||
{
|
||||
sfxenum_t sfx_id;
|
||||
if (K_IsPlayerLosing(player))
|
||||
sfx_id = ((skin_t *)player->mo->skin)->soundsid[S_sfx[sfx_klose].skinsound];
|
||||
else
|
||||
sfx_id = ((skin_t *)player->mo->skin)->soundsid[S_sfx[sfx_kwin].skinsound];
|
||||
S_StartSound(NULL, sfx_id);
|
||||
}
|
||||
else
|
||||
S_StartSound(player->mo, sfx_kwin);
|
||||
{
|
||||
if (K_IsPlayerLosing(player))
|
||||
S_StartSound(player->mo, sfx_klose);
|
||||
else
|
||||
S_StartSound(player->mo, sfx_kwin);
|
||||
}
|
||||
}
|
||||
|
||||
player->exiting = 3*TICRATE;
|
||||
player->exiting = raceexittime+2;
|
||||
|
||||
if (cv_inttime.value > 0)
|
||||
P_EndingMusic(player);
|
||||
|
@ -1754,15 +1761,15 @@ void P_DoPlayerExit(player_t *player)
|
|||
//countdown2 = countdown + 8*TICRATE;
|
||||
|
||||
if (P_CheckRacers())
|
||||
player->exiting = (14*TICRATE)/5 + 1;
|
||||
player->exiting = raceexittime+1;
|
||||
}
|
||||
else if (G_BattleGametype()) // Battle Mode exiting
|
||||
{
|
||||
player->exiting = 8*TICRATE + 1;
|
||||
player->exiting = battleexittime+1;
|
||||
P_EndingMusic(player);
|
||||
}
|
||||
else
|
||||
player->exiting = (14*TICRATE)/5 + 2; // Accidental death safeguard???
|
||||
player->exiting = raceexittime+2; // Accidental death safeguard???
|
||||
|
||||
//player->pflags &= ~PF_GLIDING;
|
||||
/* // SRB2kart - don't need
|
||||
|
@ -6572,7 +6579,7 @@ static void P_MovePlayer(player_t *player)
|
|||
S_StartSound(NULL, sfx_s3k6a);
|
||||
for (i = 0; i < MAXPLAYERS; i++)
|
||||
if (playeringame[i])
|
||||
players[i].exiting = (14*TICRATE)/5 + 1;
|
||||
players[i].exiting = raceexittime+1;
|
||||
}
|
||||
else if (player->health > 1)
|
||||
P_DamageMobj(player->mo, NULL, NULL, 1);
|
||||
|
@ -9040,8 +9047,8 @@ void P_PlayerThink(player_t *player)
|
|||
}
|
||||
}
|
||||
|
||||
if (i == MAXPLAYERS && player->exiting == 3*TICRATE) // finished
|
||||
player->exiting = (14*TICRATE)/5 + 1;
|
||||
if (i == MAXPLAYERS && player->exiting == raceexittime+2) // finished
|
||||
player->exiting = raceexittime+1;
|
||||
|
||||
// If 10 seconds are left on the timer,
|
||||
// begin the drown music for countdown!
|
||||
|
@ -9066,7 +9073,7 @@ void P_PlayerThink(player_t *player)
|
|||
|
||||
// If it is set, start subtracting
|
||||
// Don't allow it to go back to 0
|
||||
if (player->exiting > 1 && (player->exiting < 3*TICRATE || !G_RaceGametype())) // SRB2kart - "&& player->exiting > 1"
|
||||
if (player->exiting > 1 && (player->exiting < raceexittime+2 || !G_RaceGametype())) // SRB2kart - "&& player->exiting > 1"
|
||||
player->exiting--;
|
||||
|
||||
if (player->exiting && countdown2)
|
||||
|
|
19
src/sounds.c
19
src/sounds.c
|
@ -821,14 +821,17 @@ sfxinfo_t S_sfx[NUMSFX] =
|
|||
{"dbgsal", false, 110, 8, -1, NULL, 0, -1, -1, LUMPERROR},
|
||||
|
||||
// SRB2kart - Skin sounds
|
||||
{"kwin", false, 64, 0, -1, NULL, 0, SKSWIN, -1, LUMPERROR},
|
||||
{"klose", false, 64, 0, -1, NULL, 0, SKSLOSE, -1, LUMPERROR},
|
||||
{"slow", false, 128, 32, -1, NULL, 0, SKSSLOW, -1, LUMPERROR},
|
||||
{"taunt1", false, 64, 96, -1, NULL, 0, SKSPLTNT1, -1, LUMPERROR},
|
||||
{"taunt2", false, 64, 96, -1, NULL, 0, SKSPLTNT2, -1, LUMPERROR},
|
||||
{"taunt3", false, 64, 96, -1, NULL, 0, SKSPLTNT3, -1, LUMPERROR},
|
||||
{"taunt4", false, 64, 96, -1, NULL, 0, SKSPLTNT4, -1, LUMPERROR},
|
||||
{"hitem", false, 64, 32, -1, NULL, 0, SKSHITEM, -1, LUMPERROR},
|
||||
{"kwin", false, 64, 96, -1, NULL, 0, SKSKWIN, -1, LUMPERROR},
|
||||
{"klose", false, 64, 96, -1, NULL, 0, SKSKLOSE, -1, LUMPERROR},
|
||||
{"khurt1", false, 64, 96, -1, NULL, 0, SKSKPAN1, -1, LUMPERROR},
|
||||
{"khurt2", false, 64, 96, -1, NULL, 0, SKSKPAN2, -1, LUMPERROR},
|
||||
{"kattk1", false, 64, 96, -1, NULL, 0, SKSKATK1, -1, LUMPERROR},
|
||||
{"kattk2", false, 64, 96, -1, NULL, 0, SKSKATK2, -1, LUMPERROR},
|
||||
{"kbost1", false, 64, 96, -1, NULL, 0, SKSKBST1, -1, LUMPERROR},
|
||||
{"kbost2", false, 64, 96, -1, NULL, 0, SKSKBST2, -1, LUMPERROR},
|
||||
{"kslow", false, 128, 32, -1, NULL, 0, SKSKSLOW, -1, LUMPERROR},
|
||||
{"khitem", false, 64, 32, -1, NULL, 0, SKSKHITM, -1, LUMPERROR},
|
||||
{"kgloat", false, 64, 48, -1, NULL, 0, SKSKPOWR, -1, LUMPERROR},
|
||||
|
||||
// skin sounds free slots to add sounds at run time (Boris HACK!!!)
|
||||
// initialized to NULL
|
||||
|
|
34
src/sounds.h
34
src/sounds.h
|
@ -39,14 +39,17 @@ typedef enum
|
|||
SKSGASP,
|
||||
SKSJUMP,
|
||||
// SRB2kart
|
||||
SKSWIN,
|
||||
SKSLOSE,
|
||||
SKSSLOW,
|
||||
SKSPLTNT1,
|
||||
SKSPLTNT2,
|
||||
SKSPLTNT3,
|
||||
SKSPLTNT4,
|
||||
SKSHITEM,
|
||||
SKSKWIN, // Win quote
|
||||
SKSKLOSE, // Lose quote
|
||||
SKSKPAN1, // Pain
|
||||
SKSKPAN2,
|
||||
SKSKATK1, // Offense item taunt
|
||||
SKSKATK2,
|
||||
SKSKBST1, // Boost item taunt
|
||||
SKSKBST2,
|
||||
SKSKSLOW, // Overtake taunt
|
||||
SKSKHITM, // Hit confirm taunt
|
||||
SKSKPOWR, // Power item taunt
|
||||
NUMSKINSOUNDS
|
||||
} skinsound_t;
|
||||
|
||||
|
@ -894,12 +897,15 @@ typedef enum
|
|||
|
||||
sfx_kwin,
|
||||
sfx_klose,
|
||||
sfx_slow,
|
||||
sfx_taunt1,
|
||||
sfx_taunt2,
|
||||
sfx_taunt3,
|
||||
sfx_taunt4,
|
||||
sfx_hitem,
|
||||
sfx_khurt1,
|
||||
sfx_khurt2,
|
||||
sfx_kattk1,
|
||||
sfx_kattk2,
|
||||
sfx_kbost1,
|
||||
sfx_kbost2,
|
||||
sfx_kslow,
|
||||
sfx_khitem,
|
||||
sfx_kgloat,
|
||||
|
||||
// free slots for S_AddSoundFx() at run-time --------------------
|
||||
sfx_freeslot0,
|
||||
|
|
Loading…
Reference in a new issue