Most items work (netgame needs testing), will do fireballs later.

This commit is contained in:
ZTsukei 2017-02-26 17:37:52 -05:00
parent 98137822b8
commit f50ecc0dcd
27 changed files with 191 additions and 93 deletions

View file

@ -12,12 +12,12 @@
int srb2_main() int srb2_main()
{ {
// startup SRB2 // startup SRB2
CONS_Printf ("Setting up SRB2 (fo' real)..."); CONS_Printf ("Setting up SRB2Kart (fo' real)...");
D_SRB2Main(); D_SRB2Main();
CONS_Printf ("Entering main game loop..."); CONS_Printf ("Entering main game loop...");
// never return // never return
D_SRB2Loop(); D_SRB2Loop();
LOGD("Control left SRB2. Good bye."); LOGD("Control left SRB2Kart. Good bye.");
// return to OS // return to OS
return 0; return 0;

View file

@ -106,7 +106,7 @@ ticcmd_t *I_BaseTiccmd2(void)
void I_Quit(void) void I_Quit(void)
{ {
LOGD("SRB2 quitting!"); LOGD("SRB2Kart quitting!");
exit(0); exit(0);
} }

View file

@ -1314,7 +1314,7 @@ void CONS_Error(const char *msg)
#ifdef RPC_NO_WINDOWS_H #ifdef RPC_NO_WINDOWS_H
if (!graphics_started) if (!graphics_started)
{ {
MessageBoxA(vid.WndParent, msg, "SRB2 Warning", MB_OK); MessageBoxA(vid.WndParent, msg, "SRB2Kart Warning", MB_OK);
return; return;
} }
#endif #endif

View file

@ -1783,7 +1783,7 @@ static boolean CL_ServerConnectionSearchTicker(boolean viams, tic_t *asksent)
"modified the game in some way, and\n" "modified the game in some way, and\n"
"your file list does not match\n" "your file list does not match\n"
"the server's file list.\n" "the server's file list.\n"
"Please restart SRB2 before connecting.\n\n" "Please restart SRB2Kart before connecting.\n\n"
"Press ESC\n" "Press ESC\n"
), NULL, MM_NOTHING); ), NULL, MM_NOTHING);
return false; return false;

View file

@ -3617,7 +3617,7 @@ static void DEH_LoadDehackedFile(MYFILE *f, UINT16 wad)
{ {
INT32 ver = searchvalue(strtok(NULL, "\n")); INT32 ver = searchvalue(strtok(NULL, "\n"));
if (ver != PATCHVERSION) if (ver != PATCHVERSION)
deh_warning("Patch is for SRB2 version %d,\nonly version %d is supported", ver, PATCHVERSION); deh_warning("Patch is for SRB2Kart version %d,\nonly version %d is supported", ver, PATCHVERSION);
//DEH_WriteUndoline(word, va("%d", ver), UNDO_NONE); //DEH_WriteUndoline(word, va("%d", ver), UNDO_NONE);
} }
// Clear all data in certain locations (mostly for unlocks) // Clear all data in certain locations (mostly for unlocks)

View file

@ -142,17 +142,17 @@ extern FILE *logstream;
#define DEVELOP // Disable this for release builds to remove excessive cheat commands and enable MD5 checking and stuff, all in one go. :3 #define DEVELOP // Disable this for release builds to remove excessive cheat commands and enable MD5 checking and stuff, all in one go. :3
#ifdef DEVELOP #ifdef DEVELOP
#define VERSION 101 // Game version #define VERSION 102 // Game version
#define SUBVERSION 4 // more precise version number #define SUBVERSION 0 // more precise version number
#define VERSIONSTRING "Development EXE" #define VERSIONSTRING "Development EXE"
#define VERSIONSTRINGW "v1.1.04" #define VERSIONSTRINGW "v1.2.00"
// most interface strings are ignored in development mode. // most interface strings are ignored in development mode.
// we use comprevision and compbranch instead. // we use comprevision and compbranch instead.
#else #else
#define VERSION 101 // Game version #define VERSION 102 // Game version
#define SUBVERSION 4 // more precise version number #define SUBVERSION 0 // more precise version number
#define VERSIONSTRING "DevEXE v1.1.04" #define VERSIONSTRING "DevEXE v1.2.00"
#define VERSIONSTRINGW L"v1.1.04" #define VERSIONSTRINGW L"v1.2.00"
// Hey! If you change this, add 1 to the MODVERSION below! // Hey! If you change this, add 1 to the MODVERSION below!
// Otherwise we can't force updates! // Otherwise we can't force updates!
#endif #endif

View file

@ -3188,7 +3188,7 @@ void G_LoadGameData(void)
// Version check // Version check
if (READUINT32(save_p) != 0xFCAFE211) if (READUINT32(save_p) != 0xFCAFE211)
{ {
const char *gdfolder = "the SRB2 folder"; const char *gdfolder = "the SRB2Kart folder";
if (strcmp(srb2home,".")) if (strcmp(srb2home,"."))
gdfolder = srb2home; gdfolder = srb2home;
@ -3298,7 +3298,7 @@ void G_LoadGameData(void)
// Landing point for corrupt gamedata // Landing point for corrupt gamedata
datacorrupt: datacorrupt:
{ {
const char *gdfolder = "the SRB2 folder"; const char *gdfolder = "the SRB2Kart folder";
if (strcmp(srb2home,".")) if (strcmp(srb2home,"."))
gdfolder = srb2home; gdfolder = srb2home;
@ -5106,7 +5106,7 @@ void G_DoPlayDemo(char *defdemoname)
demoplayback = true; demoplayback = true;
if (memcmp(demo_p, DEMOHEADER, 12)) if (memcmp(demo_p, DEMOHEADER, 12))
{ {
snprintf(msg, 1024, M_GetText("%s is not a SRB2 replay file.\n"), pdemoname); snprintf(msg, 1024, M_GetText("%s is not a SRB2Kart replay file.\n"), pdemoname);
CONS_Alert(CONS_ERROR, "%s", msg); CONS_Alert(CONS_ERROR, "%s", msg);
M_StartMessage(msg, NULL, MM_NOTHING); M_StartMessage(msg, NULL, MM_NOTHING);
Z_Free(pdemoname); Z_Free(pdemoname);
@ -5342,7 +5342,7 @@ void G_AddGhost(char *defdemoname)
// read demo header // read demo header
if (memcmp(p, DEMOHEADER, 12)) if (memcmp(p, DEMOHEADER, 12))
{ {
CONS_Alert(CONS_NOTICE, M_GetText("Ghost %s: Not a SRB2 replay.\n"), pdemoname); CONS_Alert(CONS_NOTICE, M_GetText("Ghost %s: Not a SRB2Kart replay.\n"), pdemoname);
Z_Free(pdemoname); Z_Free(pdemoname);
Z_Free(buffer); Z_Free(buffer);
return; return;

View file

@ -23,7 +23,7 @@
// tell r_opengl.cpp to compile for ATI Rage Pro OpenGL driver // tell r_opengl.cpp to compile for ATI Rage Pro OpenGL driver
//#define ATI_RAGE_PRO_COMPATIBILITY //#define ATI_RAGE_PRO_COMPATIBILITY
#define DRIVER_STRING "HWRAPI Init(): SRB2 MiniGL renderer" #define DRIVER_STRING "HWRAPI Init(): SRB2Kart MiniGL renderer"
// Include this at end // Include this at end
#include "../r_opengl/r_opengl.c" #include "../r_opengl/r_opengl.c"

View file

@ -74,7 +74,7 @@ extern FILE *gllogstream;
#ifndef DRIVER_STRING #ifndef DRIVER_STRING
// #define USE_PALETTED_TEXTURE // #define USE_PALETTED_TEXTURE
#define DRIVER_STRING "HWRAPI Init(): SRB2 OpenGL renderer" // Tails #define DRIVER_STRING "HWRAPI Init(): SRB2Kart OpenGL renderer" // Tails
#endif #endif
// ========================================================================== // ==========================================================================

View file

@ -443,7 +443,7 @@ EXPORT INT32 HWRAPI(Startup) (I_Error_t FatalErrorFunction, snddev_t *snd_dev)
return inited; return inited;
} }
else else
DBG_Printf("S_FMOD Init(): FMOD_SOUND driver for SRB2 %s\n",VERSIONSTRING); DBG_Printf("S_FMOD Init(): FMOD_SOUND driver for SRB2Kart %s\n",VERSIONSTRING);
if (!FSOUND_SetMinHardwareChannels(STATIC_SOURCES_NUM*4)) if (!FSOUND_SetMinHardwareChannels(STATIC_SOURCES_NUM*4))
DBG_Printf("FMOD(Startup,FSOUND_SetMinHardwareChannels,# of Channels Min: %i): %s\n",STATIC_SOURCES_NUM*4, FMOD_ErrorString(FSOUND_GetError())); DBG_Printf("FMOD(Startup,FSOUND_SetMinHardwareChannels,# of Channels Min: %i): %s\n",STATIC_SOURCES_NUM*4, FMOD_ErrorString(FSOUND_GetError()));

View file

@ -2618,14 +2618,14 @@ state_t states[NUMSTATES] =
{SPR_BANA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BANANAITEM {SPR_BANA, 0, -1, {NULL}, 0, 0, S_NULL}, // S_BANANAITEM
{SPR_DBAN, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADBANANA {SPR_DBAN, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADBANANA
{SPR_GSHE, 0, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEGREENSHIELD2}, // S_TRIPLEGREENSHIELD1 {SPR_GSHE, 0, 2, {NULL}, 0, 0, S_TRIPLEGREENSHIELD2}, // S_TRIPLEGREENSHIELD1
{SPR_GSHE, 1, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEGREENSHIELD3}, // S_TRIPLEGREENSHIELD2 {SPR_GSHE, 1, 2, {NULL}, 0, 0, S_TRIPLEGREENSHIELD3}, // S_TRIPLEGREENSHIELD2
{SPR_GSHE, 2, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEGREENSHIELD4}, // S_TRIPLEGREENSHIELD3 {SPR_GSHE, 2, 2, {NULL}, 0, 0, S_TRIPLEGREENSHIELD4}, // S_TRIPLEGREENSHIELD3
{SPR_GSHE, 3, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEGREENSHIELD5}, // S_TRIPLEGREENSHIELD4 {SPR_GSHE, 3, 2, {NULL}, 0, 0, S_TRIPLEGREENSHIELD5}, // S_TRIPLEGREENSHIELD4
{SPR_GSHE, 4, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEGREENSHIELD6}, // S_TRIPLEGREENSHIELD5 {SPR_GSHE, 4, 2, {NULL}, 0, 0, S_TRIPLEGREENSHIELD6}, // S_TRIPLEGREENSHIELD5
{SPR_GSHE, 5, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEGREENSHIELD7}, // S_TRIPLEGREENSHIELD6 {SPR_GSHE, 5, 2, {NULL}, 0, 0, S_TRIPLEGREENSHIELD7}, // S_TRIPLEGREENSHIELD6
{SPR_GSHE, 6, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEGREENSHIELD8}, // S_TRIPLEGREENSHIELD7 {SPR_GSHE, 6, 2, {NULL}, 0, 0, S_TRIPLEGREENSHIELD8}, // S_TRIPLEGREENSHIELD7
{SPR_GSHE, 7, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEGREENSHIELD1}, // S_TRIPLEGREENSHIELD8 {SPR_GSHE, 7, 2, {NULL}, 0, 0, S_TRIPLEGREENSHIELD1}, // S_TRIPLEGREENSHIELD8
{SPR_GSHE, 0, 2, {NULL}, 0, 0, S_GREENSHIELD2}, // S_GREENSHIELD1 {SPR_GSHE, 0, 2, {NULL}, 0, 0, S_GREENSHIELD2}, // S_GREENSHIELD1
{SPR_GSHE, 1, 2, {NULL}, 0, 0, S_GREENSHIELD3}, // S_GREENSHIELD2 {SPR_GSHE, 1, 2, {NULL}, 0, 0, S_GREENSHIELD3}, // S_GREENSHIELD2
{SPR_GSHE, 2, 2, {NULL}, 0, 0, S_GREENSHIELD4}, // S_GREENSHIELD3 {SPR_GSHE, 2, 2, {NULL}, 0, 0, S_GREENSHIELD4}, // S_GREENSHIELD3
@ -2653,14 +2653,14 @@ state_t states[NUMSTATES] =
{SPR_GSTR, 8, 1, {NULL}, 0, 0, S_NULL}, // S_GREENTRAIL9 {SPR_GSTR, 8, 1, {NULL}, 0, 0, S_NULL}, // S_GREENTRAIL9
{SPR_DGSH, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADGREEN {SPR_DGSH, 0, 175, {NULL}, 0, 0, S_NULL}, // S_DEADGREEN
{SPR_RSHE, 0, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEREDSHIELD2}, // S_TRIPLEREDSHIELD1 {SPR_RSHE, 0, 2, {NULL}, 0, 0, S_TRIPLEREDSHIELD2}, // S_TRIPLEREDSHIELD1
{SPR_RSHE, 1, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEREDSHIELD3}, // S_TRIPLEREDSHIELD2 {SPR_RSHE, 1, 2, {NULL}, 0, 0, S_TRIPLEREDSHIELD3}, // S_TRIPLEREDSHIELD2
{SPR_RSHE, 2, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEREDSHIELD4}, // S_TRIPLEREDSHIELD3 {SPR_RSHE, 2, 2, {NULL}, 0, 0, S_TRIPLEREDSHIELD4}, // S_TRIPLEREDSHIELD3
{SPR_RSHE, 3, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEREDSHIELD5}, // S_TRIPLEREDSHIELD4 {SPR_RSHE, 3, 2, {NULL}, 0, 0, S_TRIPLEREDSHIELD5}, // S_TRIPLEREDSHIELD4
{SPR_RSHE, 4, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEREDSHIELD6}, // S_TRIPLEREDSHIELD5 {SPR_RSHE, 4, 2, {NULL}, 0, 0, S_TRIPLEREDSHIELD6}, // S_TRIPLEREDSHIELD5
{SPR_RSHE, 5, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEREDSHIELD7}, // S_TRIPLEREDSHIELD6 {SPR_RSHE, 5, 2, {NULL}, 0, 0, S_TRIPLEREDSHIELD7}, // S_TRIPLEREDSHIELD6
{SPR_RSHE, 6, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEREDSHIELD8}, // S_TRIPLEREDSHIELD7 {SPR_RSHE, 6, 2, {NULL}, 0, 0, S_TRIPLEREDSHIELD8}, // S_TRIPLEREDSHIELD7
{SPR_RSHE, 7, 2, {A_RotateSpikeBall}, 0, 0, S_TRIPLEREDSHIELD1}, // S_TRIPLEREDSHIELD8 {SPR_RSHE, 7, 2, {NULL}, 0, 0, S_TRIPLEREDSHIELD1}, // S_TRIPLEREDSHIELD8
{SPR_RSHE, 0, 2, {NULL}, 0, 0, S_REDSHIELD2}, // S_REDSHIELD1 {SPR_RSHE, 0, 2, {NULL}, 0, 0, S_REDSHIELD2}, // S_REDSHIELD1
{SPR_RSHE, 1, 2, {NULL}, 0, 0, S_REDSHIELD3}, // S_REDSHIELD2 {SPR_RSHE, 1, 2, {NULL}, 0, 0, S_REDSHIELD3}, // S_REDSHIELD2
{SPR_RSHE, 2, 2, {NULL}, 0, 0, S_REDSHIELD4}, // S_REDSHIELD3 {SPR_RSHE, 2, 2, {NULL}, 0, 0, S_REDSHIELD4}, // S_REDSHIELD3
@ -2699,12 +2699,12 @@ state_t states[NUMSTATES] =
{SPR_BLIG, 1, 2, {NULL}, 0, 0, S_BLUELIGHTNING3}, // S_BLUELIGHTNING2 {SPR_BLIG, 1, 2, {NULL}, 0, 0, S_BLUELIGHTNING3}, // S_BLUELIGHTNING2
{SPR_BLIG, 2, 2, {NULL}, 0, 0, S_BLUELIGHTNING4}, // S_BLUELIGHTNING3 {SPR_BLIG, 2, 2, {NULL}, 0, 0, S_BLUELIGHTNING4}, // S_BLUELIGHTNING3
{SPR_BLIG, 3, 2, {NULL}, 0, 0, S_NULL}, // S_BLUELIGHTNING4 {SPR_BLIG, 3, 2, {NULL}, 0, 0, S_NULL}, // S_BLUELIGHTNING4
{SPR_NULL, 0, 1, {A_BobombExplode}, MT_BLUEEXPLOSION, 0, S_NULL}, // S_BLUEEXPLODE {SPR_BOMB, 0, 1, {A_BobombExplode}, MT_BLUEEXPLOSION, 0, S_NULL}, // S_BLUEEXPLODE
{SPR_LIGH, 0, 2, {NULL}, 0, 0, S_LIGHTNING2}, // S_LIGHTNING1 {SPR_LIGH, 0, 2, {NULL}, 0, 0, S_LIGHTNING2}, // S_LIGHTNING1
{SPR_LIGH, 0, 2, {NULL}, 0, 0, S_LIGHTNING3}, // S_LIGHTNING2 {SPR_LIGH, 1, 2, {NULL}, 0, 0, S_LIGHTNING3}, // S_LIGHTNING2
{SPR_LIGH, 0, 2, {NULL}, 0, 0, S_LIGHTNING4}, // S_LIGHTNING3 {SPR_LIGH, 2, 2, {NULL}, 0, 0, S_LIGHTNING4}, // S_LIGHTNING3
{SPR_LIGH, 0, 2, {NULL}, 0, 0, S_NULL}, // S_LIGHTNING4 {SPR_LIGH, 3, 2, {NULL}, 0, 0, S_NULL}, // S_LIGHTNING4
{SPR_SINK, 0, 4, {A_SmokeTrailer}, MT_SINKTRAIL, 0, S_SINK}, // S_SINK {SPR_SINK, 0, 4, {A_SmokeTrailer}, MT_SINKTRAIL, 0, S_SINK}, // S_SINK
{SPR_SITR, 0, 1, {NULL}, 0, 0, S_SINKTRAIL2}, // S_SINKTRAIL1 {SPR_SITR, 0, 1, {NULL}, 0, 0, S_SINKTRAIL2}, // S_SINKTRAIL1
@ -14841,6 +14841,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate S_NULL // raisestate
}, },
{ // MT_BOMBEXPLOSIONSOUND
-1, // doomednum
S_INVISIBLE, // spawnstate
100, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound
8, // reactiontime
sfx_None, // attacksound
S_NULL, // painstate
0, // painchance
sfx_None, // painsound
S_NULL, // meleestate
S_NULL, // missilestate
S_NULL, // deathstate
S_NULL, // xdeathstate
sfx_None, // deathsound
0, // speed
16*FRACUNIT, // radius
16*FRACUNIT, // height
0, // display offset
100, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOSECTOR|MF_NOGRAVITY, // flags
S_NULL // raisestate
},
{ // MT_BLUELIGHTNING { // MT_BLUELIGHTNING
-1, // doomednum -1, // doomednum
S_BLUELIGHTNING1, // spawnstate S_BLUELIGHTNING1, // spawnstate
@ -14870,8 +14897,8 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
{ // MT_BLUEEXPLOSION { // MT_BLUEEXPLOSION
-1, // doomednum -1, // doomednum
S_BLUEEXPLODE, // spawnstate S_INVISIBLE, // spawnstate
1000, // spawnhealth 1, // spawnhealth
S_NULL, // seestate S_NULL, // seestate
sfx_None, // seesound sfx_None, // seesound
8, // reactiontime 8, // reactiontime
@ -14881,17 +14908,17 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
sfx_None, // painsound sfx_None, // painsound
S_NULL, // meleestate S_NULL, // meleestate
S_NULL, // missilestate S_NULL, // missilestate
S_NULL, // deathstate S_BOMBEXPLODE, // deathstate
S_NULL, // xdeathstate S_NULL, // xdeathstate
sfx_None, // deathsound sfx_None, // deathsound
8, // speed 0, // speed
64*FRACUNIT, // radius 16*FRACUNIT, // radius
64*FRACUNIT, // height 24*FRACUNIT, // height
0, // display offset 0, // display offset
16, // mass 100, // mass
0, // damage 1, // damage
sfx_None, // activesound sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIP|MF_NOGRAVITY|MF_SCENERY|MF_RUNSPAWNFUNC, // flags MF_BOUNCE|MF_FLOAT|MF_NOCLIPTHING|MF_MISSILE|MF_SHOOTABLE, // flags
S_NULL // raisestate S_NULL // raisestate
}, },

View file

@ -3781,6 +3781,7 @@ typedef enum mobj_type
MT_BOMBSHIELD, // Bob-omb stuff MT_BOMBSHIELD, // Bob-omb stuff
MT_BOMBITEM, MT_BOMBITEM,
MT_BOMBEXPLOSION, MT_BOMBEXPLOSION,
MT_BOMBEXPLOSIONSOUND,
MT_BLUELIGHTNING, // Lightning stuff MT_BLUELIGHTNING, // Lightning stuff
MT_BLUEEXPLOSION, MT_BLUEEXPLOSION,

View file

@ -313,13 +313,13 @@ static fixed_t K_KartItemOdds_Retro[MAXPLAYERS][NUMKARTITEMS][MAXPLAYERS] =
{ //1st // { //1st //
{ 0 }, // Magnet { 0 }, // Magnet
{ 0 }, // Boo { 0 }, // Boo
{ 0 }, // Mushroom { 40 }, // Mushroom
{ 0 }, // Triple Mushroom { 0 }, // Triple Mushroom
{ 0 }, // Mega Mushroom { 0 }, // Mega Mushroom
{ 0 }, // Gold Mushroom { 0 }, // Gold Mushroom
{ 0 }, // Star { 0 }, // Star
{ 0 }, // Triple Banana { 0 }, // Triple Banana
{ 40 }, // Fake Item { 0 }, // Fake Item
{ 0 }, // Banana { 0 }, // Banana
{ 0 }, // Green Shell { 0 }, // Green Shell
{ 0 }, // Red Shell { 0 }, // Red Shell
@ -844,7 +844,7 @@ static void K_KartItemRoulette(player_t *player, ticcmd_t *cmd)
if (cv_triplegreenshell.value) K_KartSetItemResult(ppos, 13); // Triple Green Shell if (cv_triplegreenshell.value) K_KartSetItemResult(ppos, 13); // Triple Green Shell
if (cv_bobomb.value) K_KartSetItemResult(ppos, 14); // Bob-omb if (cv_bobomb.value) K_KartSetItemResult(ppos, 14); // Bob-omb
if (cv_blueshell.value && pexiting == 0) K_KartSetItemResult(ppos, 15); // Blue Shell if (cv_blueshell.value && pexiting == 0) K_KartSetItemResult(ppos, 15); // Blue Shell
if (cv_fireflower.value) K_KartSetItemResult(ppos, 16); // Fire Flower //if (cv_fireflower.value) K_KartSetItemResult(ppos, 16); // Fire Flower
if (cv_tripleredshell.value) K_KartSetItemResult(ppos, 17); // Triple Red Shell if (cv_tripleredshell.value) K_KartSetItemResult(ppos, 17); // Triple Red Shell
if (cv_lightning.value && pingame > pexiting) K_KartSetItemResult(ppos, 18); // Lightning if (cv_lightning.value && pingame > pexiting) K_KartSetItemResult(ppos, 18); // Lightning
@ -1097,12 +1097,7 @@ fixed_t K_GetKartBoostPower(player_t *player, boolean speedonly)
if (player->kartstuff[k_growshrinktimer] < -1 && speedonly) if (player->kartstuff[k_growshrinktimer] < -1 && speedonly)
{ // Shrink { // Shrink
boostvalue += 6; // 6/8 speed (*0.750) boostvalue += 16; // This is basically speed x2 due to friction and being smaller. Really translates to about 80%.
numboosts++;
}
if (player->kartstuff[k_squishedtimer] > 0 && speedonly)
{ // Squished
boostvalue += 7; // 7/8 speed (*0.875)
numboosts++; numboosts++;
} }
if (player->kartstuff[k_growshrinktimer] > 1 if (player->kartstuff[k_growshrinktimer] > 1
@ -1759,24 +1754,35 @@ void K_DoMushroom(player_t *player, boolean doPFlag)
void K_DoLightning(player_t *player, boolean bluelightning) void K_DoLightning(player_t *player, boolean bluelightning)
{ {
mobj_t *mo;
thinker_t *think;
INT32 i; INT32 i;
S_StartSound(player->mo, sfx_bkpoof); // Sound the BANG! S_StartSound(player->mo, sfx_bkpoof); // Sound the BANG!
K_PlayTauntSound(player->mo);
player->pflags |= PF_ATTACKDOWN; player->pflags |= PF_ATTACKDOWN;
for (i = 0; i < MAXPLAYERS; i++) for (i = 0; i < MAXPLAYERS; i++)
{ {
if (playeringame[i]) if (playeringame[i])
P_FlashPal(&players[i], PAL_NUKE, 10); P_FlashPal(&players[i], PAL_NUKE, 10);
}
if (bluelightning) for (think = thinkercap.next; think != &thinkercap; think = think->next)
P_DamageMobj(players[i].mo, player->mo, player->mo, bluelightning ? 65 : 64); {
if (think->function.acp1 != (actionf_p1)P_MobjThinker)
continue; // not a mobj thinker
mo = (mobj_t *)think;
if (mo->type == MT_PLAYER)
P_DamageMobj(mo, player->mo, player->mo, bluelightning ? 65 : 64);
else
continue;
} }
if (player->kartstuff[k_sounds]) // Prevents taunt sounds from playing every time the button is pressed if (player->kartstuff[k_sounds]) // Prevents taunt sounds from playing every time the button is pressed
return; return;
K_PlayTauntSound(player->mo); //K_PlayTauntSound(player->mo);
player->kartstuff[k_sounds] = 50; player->kartstuff[k_sounds] = 50;
} }

View file

@ -2734,7 +2734,7 @@ void M_Init(void)
quitmsg[QUIT3MSG1] = M_GetText("Come on, just ONE more netgame!\n\n(Press 'Y' to quit)"); quitmsg[QUIT3MSG1] = M_GetText("Come on, just ONE more netgame!\n\n(Press 'Y' to quit)");
quitmsg[QUIT3MSG2] = M_GetText("Press 'N' to unlock\nthe Ultimate Cheat!\n\n(Press 'Y' to quit)"); quitmsg[QUIT3MSG2] = M_GetText("Press 'N' to unlock\nthe Ultimate Cheat!\n\n(Press 'Y' to quit)");
quitmsg[QUIT3MSG3] = M_GetText("Why don't you go back and try\njumping on that house to\nsee what happens?\n\n(Press 'Y' to quit)"); quitmsg[QUIT3MSG3] = M_GetText("Why don't you go back and try\njumping on that house to\nsee what happens?\n\n(Press 'Y' to quit)");
quitmsg[QUIT3MSG4] = M_GetText("Every time you press 'Y', an\nSRB2 Developer cries...\n\n(Press 'Y' to quit)"); quitmsg[QUIT3MSG4] = M_GetText("Every time you press 'Y', an\nSRB2Kart Developer cries...\n\n(Press 'Y' to quit)");
quitmsg[QUIT3MSG5] = M_GetText("You'll be back to play soon, though...\n......right?\n\n(Press 'Y' to quit)"); quitmsg[QUIT3MSG5] = M_GetText("You'll be back to play soon, though...\n......right?\n\n(Press 'Y' to quit)");
quitmsg[QUIT3MSG6] = M_GetText("Aww, is Egg Rock Zone too\ndifficult for you?\n\n(Press 'Y' to quit)"); quitmsg[QUIT3MSG6] = M_GetText("Aww, is Egg Rock Zone too\ndifficult for you?\n\n(Press 'Y' to quit)");

View file

@ -532,7 +532,7 @@ void M_SaveConfig(const char *filename)
} }
// header message // header message
fprintf(f, "// SRB2 configuration file.\n"); fprintf(f, "// SRB2Kart configuration file.\n");
// FIXME: save key aliases if ever implemented.. // FIXME: save key aliases if ever implemented..
@ -652,8 +652,8 @@ static void M_PNGText(png_structp png_ptr, png_infop png_info_ptr, PNG_CONST png
char titletxt[] = "Sonic Robo Blast 2 " VERSIONSTRING; char titletxt[] = "Sonic Robo Blast 2 " VERSIONSTRING;
png_charp authortxt = I_GetUserName(); png_charp authortxt = I_GetUserName();
png_charp playertxt = cv_playername.zstring; png_charp playertxt = cv_playername.zstring;
char desctxt[] = "SRB2 Screenshot"; char desctxt[] = "SRB2Kart Screenshot";
char Movietxt[] = "SRB2 Movie"; char Movietxt[] = "SRB2Kart Movie";
size_t i; size_t i;
char interfacetxt[] = char interfacetxt[] =
#ifdef HAVE_SDL #ifdef HAVE_SDL

View file

@ -206,7 +206,7 @@ static void ServerName_OnChange(void);
#define DEF_PORT "28900" #define DEF_PORT "28900"
consvar_t cv_masterserver = {"masterserver", "ms.srb2.org:"DEF_PORT, CV_SAVE, NULL, MasterServer_OnChange, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_masterserver = {"masterserver", "ms.srb2.org:"DEF_PORT, CV_SAVE, NULL, MasterServer_OnChange, 0, NULL, NULL, 0, 0, NULL};
consvar_t cv_servername = {"servername", "SRB2 server", CV_SAVE, NULL, ServerName_OnChange, 0, NULL, NULL, 0, 0, NULL}; consvar_t cv_servername = {"servername", "SRB2Kart server", CV_SAVE, NULL, ServerName_OnChange, 0, NULL, NULL, 0, 0, NULL};
INT16 ms_RoomId = -1; INT16 ms_RoomId = -1;

View file

@ -8243,6 +8243,7 @@ void A_RedShellChase(mobj_t *actor)
void A_BobombExplode(mobj_t *actor) void A_BobombExplode(mobj_t *actor)
{ {
mobj_t *mo2; mobj_t *mo2;
mobj_t *mo3;
thinker_t *th; thinker_t *th;
INT32 d; INT32 d;
INT32 locvar1 = var1; INT32 locvar1 = var1;
@ -8253,7 +8254,9 @@ void A_BobombExplode(mobj_t *actor)
for (d = 0; d < 16; d++) for (d = 0; d < 16; d++)
K_SpawnKartExplosion(actor->x, actor->y, actor->z, actor->info->painchance + 32*FRACUNIT, 32, type, d*(ANGLE_45/4), false, false); // 32 <-> 64 K_SpawnKartExplosion(actor->x, actor->y, actor->z, actor->info->painchance + 32*FRACUNIT, 32, type, d*(ANGLE_45/4), false, false); // 32 <-> 64
S_StartSound(actor, sfx_prloop); mo3 = P_SpawnMobj(actor->x, actor->y, actor->z, MT_BOMBEXPLOSIONSOUND);
//S_StartSound(actor, sfx_prloop);
for (th = thinkercap.next; th != &thinkercap; th = th->next) for (th = thinkercap.next; th != &thinkercap; th = th->next)
{ {
@ -8262,7 +8265,7 @@ void A_BobombExplode(mobj_t *actor)
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2 == actor) // Don't explode yourself! Endless loop! if (mo2 == actor || mo2->type == MT_BOMBEXPLOSIONSOUND) // Don't explode yourself! Endless loop!
continue; continue;
if (P_AproxDistance(P_AproxDistance(mo2->x - actor->x, mo2->y - actor->y), mo2->z - actor->z) > actor->info->painchance) if (P_AproxDistance(P_AproxDistance(mo2->x - actor->x, mo2->y - actor->y), mo2->z - actor->z) > actor->info->painchance)
@ -8277,8 +8280,6 @@ void A_BobombExplode(mobj_t *actor)
else else
P_DamageMobj(mo2, actor, actor->target, 1); P_DamageMobj(mo2, actor, actor->target, 1);
continue; continue;
} }
} }

View file

@ -3125,7 +3125,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
K_SpinPlayer(player, source); K_SpinPlayer(player, source);
// Start shrinking! // Start shrinking!
player->mo->destscale = 70; player->mo->destscale = 6*FRACUNIT/8;
player->kartstuff[k_growshrinktimer] -= (100+20*(16-(player->kartstuff[k_position]))); player->kartstuff[k_growshrinktimer] -= (100+20*(16-(player->kartstuff[k_position])));
} }
// Mega Mushroom? Let's take that away. // Mega Mushroom? Let's take that away.

View file

@ -1702,12 +1702,57 @@ void P_XYMovement(mobj_t *mo)
if (player->bot) if (player->bot)
B_MoveBlocked(player); B_MoveBlocked(player);
} }
//{ SRB2kart - Red Shell
if (mo->type == MT_REDITEM || mo->type == MT_REDITEMDUD)
{
if (mo->health == 1)
{
// This Item Damage
S_StartSound(mo, mo->info->deathsound);
P_KillMobj(mo, NULL, NULL);
if (mo->flags & MF_BOUNCE) P_SetObjectMomZ(mo, 8*FRACUNIT, false);
P_InstaThrust(mo, R_PointToAngle2(mo->x, mo->y, mo->x + xmove, mo->y + ymove)+ANGLE_90, 16*FRACUNIT);
}
}
//}
else if (mo->flags & MF_BOUNCE)
{ {
P_BounceMove(mo); P_BounceMove(mo);
xmove = ymove = 0; xmove = ymove = 0;
S_StartSound(mo, mo->info->activesound); //S_StartSound(mo, mo->info->activesound);
//{ SRB2kart - Shell and fireball
if (mo->type == MT_GREENITEM)
{
if (mo->health > 1)
{
S_StartSound(mo, mo->info->attacksound);
mo->health--;
mo->threshold = 0;
}
else if (mo->health == 1)
{
// This Item Damage
S_StartSound(mo, mo->info->deathsound);
P_KillMobj(mo, NULL, NULL);
P_SetObjectMomZ(mo, 8*FRACUNIT, false);
P_InstaThrust(mo, R_PointToAngle2(mo->x, mo->y, mo->x + xmove, mo->y + ymove)+ANGLE_90, 16*FRACUNIT);
}
}
if (mo->type == MT_FIREBALL)
{
S_StartSound(mo, mo->info->attacksound);
mo->health--;
if (mo->health <= 0)
{
S_StartSound(mo, mo->info->deathsound);
P_SetMobjState(mo, mo->info->deathstate);
}
}
else
S_StartSound(mo, mo->info->activesound);
//}
// Bounce ring algorithm // Bounce ring algorithm
if (mo->type == MT_THROWNBOUNCE) if (mo->type == MT_THROWNBOUNCE)
@ -1913,8 +1958,8 @@ void P_XYMovement(mobj_t *mo)
#endif #endif
//{ SRB2kart stuff //{ SRB2kart stuff
//if (mo->type == MT_SHELLITEM || mo->type == MT_REDSHELLITEM2 || (mo->type == MT_REDSHELLITEM && !mo->tracer)) if (mo->type == MT_GREENITEM || mo->type == MT_REDITEMDUD || (mo->type == MT_REDITEM && !mo->tracer))
// return; return;
if (mo->player && mo->player->kartstuff[k_spinouttimer] && mo->player->speed <= mo->player->normalspeed/4) if (mo->player && mo->player->kartstuff[k_spinouttimer] && mo->player->speed <= mo->player->normalspeed/4)
return; return;
@ -6450,7 +6495,7 @@ void P_MobjThinker(mobj_t *mobj)
else else
zfixds = 56; zfixds = 56;
INT32 DIST = FixedDiv(zfixds, mobj->target->scale); INT32 DIST = FixedMul(zfixds, mobj->target->scale);
INT32 HEIGHT; INT32 HEIGHT;
const fixed_t radius = DIST*FRACUNIT; // mobj's distance from its Target, or Radius. const fixed_t radius = DIST*FRACUNIT; // mobj's distance from its Target, or Radius.
@ -6870,7 +6915,17 @@ void P_MobjThinker(mobj_t *mobj)
P_RemoveMobj(mobj); P_RemoveMobj(mobj);
break; break;
case MT_BOMBITEM: case MT_BOMBITEM:
P_SetMobjState(mobj, mobj->info->deathstate); case MT_BLUEEXPLOSION:
if (mobj->health > -100)
{
P_SetMobjState(mobj, mobj->info->deathstate);
mobj->health = -100;
}
else
P_RemoveMobj(mobj);
break;
case MT_BOMBEXPLOSIONSOUND:
P_RemoveMobj(mobj);
break; break;
//} //}
default: default:
@ -7432,6 +7487,9 @@ void P_MobjThinker(mobj_t *mobj)
if (mobj->threshold > 0) if (mobj->threshold > 0)
mobj->threshold--; mobj->threshold--;
break; break;
case MT_BLUEEXPLOSION:
mobj->health--;
break;
case MT_BOMBEXPLOSION: case MT_BOMBEXPLOSION:
if ((mobj->z < mobj->floorz - mobj->height) || (mobj->z > mobj->ceilingz + mobj->height)) if ((mobj->z < mobj->floorz - mobj->height) || (mobj->z > mobj->ceilingz + mobj->height))
{ {
@ -7455,6 +7513,11 @@ void P_MobjThinker(mobj_t *mobj)
mobj->z += mobj->momz; mobj->z += mobj->momz;
P_SetThingPosition(mobj); P_SetThingPosition(mobj);
return; return;
case MT_BOMBEXPLOSIONSOUND:
if (mobj->health == 100)
S_StartSound(mobj, sfx_prloop);
mobj->health--;
break;
//} //}
case MT_TURRET: case MT_TURRET:
P_MobjCheckWater(mobj); P_MobjCheckWater(mobj);

View file

@ -4588,12 +4588,12 @@ static void P_3dMovement(player_t *player)
if (player->kartstuff[k_drift] >= 1) if (player->kartstuff[k_drift] >= 1)
{ {
movepushangle = player->mo->angle+ANGLE_45; movepushangle = player->mo->angle+ANGLE_45;
player->kartstuff[k_driftfix] = 4; player->kartstuff[k_driftfix] = 5;
} }
else if (player->kartstuff[k_drift] <= -1) else if (player->kartstuff[k_drift] <= -1)
{ {
movepushangle = player->mo->angle-ANGLE_45; movepushangle = player->mo->angle-ANGLE_45;
player->kartstuff[k_driftfix] = -4; player->kartstuff[k_driftfix] = -5;
} }
else else
movepushangle = player->mo->angle; movepushangle = player->mo->angle;

View file

@ -683,7 +683,7 @@ static void I_StartupConsole(void)
if (gotConsole) if (gotConsole)
{ {
SetConsoleTitleA("SRB2 Console"); SetConsoleTitleA("SRB2Kart Console");
consolevent = SDL_TRUE; consolevent = SDL_TRUE;
} }
@ -1659,7 +1659,7 @@ void I_UpdateMumble(const mobj_t *mobj, const listener_t listener)
return; return;
if(mumble->uiVersion != 2) { if(mumble->uiVersion != 2) {
wcsncpy(mumble->name, L"SRB2 "VERSIONSTRINGW, 256); wcsncpy(mumble->name, L"SRB2Kart "VERSIONSTRINGW, 256);
wcsncpy(mumble->description, L"Sonic Robo Blast 2 with integrated Mumble Link support.", 2048); wcsncpy(mumble->description, L"Sonic Robo Blast 2 with integrated Mumble Link support.", 2048);
mumble->uiVersion = 2; mumble->uiVersion = 2;
} }
@ -2374,7 +2374,7 @@ void I_Error(const char *error, ...)
// which should fail gracefully if it can't put a message box up // which should fail gracefully if it can't put a message box up
// on the target system // on the target system
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR,
"SRB2 "VERSIONSTRING" Recursive Error", "SRB2Kart "VERSIONSTRING" Recursive Error",
buffer, NULL); buffer, NULL);
W_Shutdown(); W_Shutdown();
@ -2427,7 +2427,7 @@ void I_Error(const char *error, ...)
// which should fail gracefully if it can't put a message box up // which should fail gracefully if it can't put a message box up
// on the target system // on the target system
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR,
"SRB2 "VERSIONSTRING" Error", "SRB2Kart "VERSIONSTRING" Error",
buffer, NULL); buffer, NULL);
// Note that SDL_ShowSimpleMessageBox does *not* require SDL to be // Note that SDL_ShowSimpleMessageBox does *not* require SDL to be
// initialized at the time, so calling it after SDL_Quit() is // initialized at the time, so calling it after SDL_Quit() is

View file

@ -1236,7 +1236,7 @@ static SDL_bool Impl_CreateWindow(SDL_bool fullscreen)
#endif #endif
// Create a window // Create a window
window = SDL_CreateWindow("SRB2 "VERSIONSTRING, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, window = SDL_CreateWindow("SRB2Kart "VERSIONSTRING, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
realwidth, realheight, flags); realwidth, realheight, flags);
if (window == NULL) if (window == NULL)

View file

@ -1942,7 +1942,7 @@ boolean I_StartDigSong(const char *musicname, boolean looping)
loopstartDig = 0.0l; loopstartDig = 0.0l;
#else #else
if (looping && strcmp(data, "OggS") == 0) if (looping && strcmp(data, "OggS") == 0)
I_OutputMsg("I_StartDigSong: SRB2 was not compiled with looping music support(no Mix_FadeInMusicPos)\n"); I_OutputMsg("I_StartDigSong: SRB2Kart was not compiled with looping music support(no Mix_FadeInMusicPos)\n");
#endif #endif
if (!LoadSong(data, lumplength, 1)) if (!LoadSong(data, lumplength, 1))

View file

@ -682,7 +682,7 @@ static void I_StartupConsole(void)
if (gotConsole) if (gotConsole)
{ {
SetConsoleTitleA("SRB2 Console"); SetConsoleTitleA("SRB2Kart Console");
consolevent = SDL_TRUE; consolevent = SDL_TRUE;
} }
@ -1662,7 +1662,7 @@ void I_UpdateMumble(const mobj_t *mobj, const listener_t listener)
return; return;
if(mumble->uiVersion != 2) { if(mumble->uiVersion != 2) {
wcsncpy(mumble->name, L"SRB2 "VERSIONSTRING, 256); wcsncpy(mumble->name, L"SRB2Kart "VERSIONSTRING, 256);
wcsncpy(mumble->description, L"Sonic Robo Blast 2 with integrated Mumble Link support.", 2048); wcsncpy(mumble->description, L"Sonic Robo Blast 2 with integrated Mumble Link support.", 2048);
mumble->uiVersion = 2; mumble->uiVersion = 2;
} }

View file

@ -33,7 +33,7 @@ boolean I_InitNetwork(void)
{ {
if (M_CheckParm ("-net")) if (M_CheckParm ("-net"))
{ {
I_Error("The Win32 version of SRB2 doesn't work with external drivers like ipxsetup, sersetup, or doomatic\n" I_Error("The Win32 version of SRB2Kart doesn't work with external drivers like ipxsetup, sersetup, or doomatic\n"
"Read the documentation about \"-server\" and \"-connect\" parameters or just use the launcher\n"); "Read the documentation about \"-server\" and \"-connect\" parameters or just use the launcher\n");
} }

View file

@ -504,7 +504,7 @@ static void signal_handler(int num)
} }
#endif #endif
MessageBoxA(hWndMain, va("signal_handler(): %s", sigmsg), "SRB2 error", MB_OK|MB_ICONERROR); MessageBoxA(hWndMain, va("signal_handler(): %s", sigmsg), "SRB2Kart error", MB_OK|MB_ICONERROR);
signal(num, SIG_DFL); // default signal action signal(num, SIG_DFL); // default signal action
raise(num); raise(num);
@ -621,7 +621,7 @@ void I_Error(const char *error, ...)
va_end(argptr); va_end(argptr);
OutputDebugStringA(txt); OutputDebugStringA(txt);
MessageBoxA(hWndMain, txt, "SRB2 Recursive Error", MB_OK|MB_ICONERROR); MessageBoxA(hWndMain, txt, "SRB2Kart Recursive Error", MB_OK|MB_ICONERROR);
W_Shutdown(); W_Shutdown();
exit(-1); // recursive errors detected exit(-1); // recursive errors detected
} }
@ -665,7 +665,7 @@ void I_Error(const char *error, ...)
} }
#endif #endif
MessageBoxA(hWndMain, txt, "SRB2 Error", MB_OK|MB_ICONERROR); MessageBoxA(hWndMain, txt, "SRB2Kart Error", MB_OK|MB_ICONERROR);
W_Shutdown(); W_Shutdown();
exit(-1); exit(-1);

View file

@ -479,7 +479,7 @@ static int WINAPI HandledWinMain(HINSTANCE hInstance,
// open a dummy window, both OpenGL and DirectX need one. // open a dummy window, both OpenGL and DirectX need one.
if ((hWndMain = OpenMainWindow(hInstance,nCmdShow, if ((hWndMain = OpenMainWindow(hInstance,nCmdShow,
va("SRB2 "VERSIONSTRING))) == (HANDLE)-1) va("SRB2Kart "VERSIONSTRING))) == (HANDLE)-1)
{ {
tlErrorMessage(TEXT("Couldn't open window")); tlErrorMessage(TEXT("Couldn't open window"));
return FALSE; return FALSE;