diff --git a/src/doomdef.h b/src/doomdef.h index cdd267a5..ff3cbbcd 100644 --- a/src/doomdef.h +++ b/src/doomdef.h @@ -143,16 +143,16 @@ 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 #ifdef DEVELOP #define VERSION 103 // Game version -#define SUBVERSION 15 // more precise version number +#define SUBVERSION 16 // more precise version number #define VERSIONSTRING "Development EXE" -#define VERSIONSTRINGW "v1.3.15" +#define VERSIONSTRINGW "v1.3.16" // most interface strings are ignored in development mode. // we use comprevision and compbranch instead. #else #define VERSION 103 // Game version -#define SUBVERSION 15 // more precise version number -#define VERSIONSTRING "DevEXE v1.3.15" -#define VERSIONSTRINGW L"v1.3.15" +#define SUBVERSION 16 // more precise version number +#define VERSIONSTRING "DevEXE v1.3.16" +#define VERSIONSTRINGW L"v1.3.16" // Hey! If you change this, add 1 to the MODVERSION below! // Otherwise we can't force updates! #endif diff --git a/src/k_kart.c b/src/k_kart.c index cb23f943..148028b4 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1845,11 +1845,11 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map if (dir == -1) { // Shoot backward - mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x08000000, 0, 64*FRACUNIT); - mo2 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x04000000, 0, 64*FRACUNIT); + mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x06000000, 0, 64*FRACUNIT); + mo2 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 - 0x03000000, 0, 64*FRACUNIT); mo3 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180, 0, 64*FRACUNIT); - mo4 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x04000000, 0, 64*FRACUNIT); - mo5 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x08000000, 0, 64*FRACUNIT); + mo4 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x03000000, 0, 64*FRACUNIT); + mo5 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + ANGLE_180 + 0x06000000, 0, 64*FRACUNIT); if (mo) { @@ -1866,11 +1866,11 @@ static mobj_t *K_ThrowKartItem(player_t *player, boolean missile, mobjtype_t map else { // Shoot forward - mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle - 0x08000000, 0, 64*FRACUNIT); - mo2 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle - 0x04000000, 0, 64*FRACUNIT); + mo = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle - 0x06000000, 0, 64*FRACUNIT); + mo2 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle - 0x03000000, 0, 64*FRACUNIT); mo3 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle, 0, 64*FRACUNIT); - mo4 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + 0x04000000, 0, 64*FRACUNIT); - mo5 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + 0x08000000, 0, 64*FRACUNIT); + mo4 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + 0x03000000, 0, 64*FRACUNIT); + mo5 = K_SpawnKartMissile(player->mo, mapthing, player->mo->angle + 0x06000000, 0, 64*FRACUNIT); if (mo) { @@ -1977,7 +1977,7 @@ static void K_DoMagnet(player_t *player) { S_StartSound(player->mo, sfx_s3k45); player->kartstuff[k_magnettimer] = 35; - P_NukeEnemies(player->mo, player->mo, 16*FRACUNIT); + P_NukeEnemies(player->mo, player->mo, RING_DIST/4); } static void K_DoBooSteal(player_t *player) @@ -2859,7 +2859,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (!P_IsLocalPlayer(player)) S_StartSound(player->mo, sfx_mega); K_PlayTauntSound(player->mo); - player->kartstuff[k_growshrinktimer] = itemtime; + player->kartstuff[k_growshrinktimer] = itemtime + TICRATE*2; S_StartSound(player->mo, sfx_mario3); player->pflags |= PF_ATTACKDOWN; player->kartstuff[k_megashroom] = 0; @@ -3426,16 +3426,16 @@ static void K_drawKartRetroItem(void) else if (stplyr->kartstuff[k_boostolentimer] > 0 && !(leveltime & 2)) localpatch = kp_noitem; else if (stplyr->kartstuff[k_kitchensink] == 1) localpatch = kp_kitchensink; else if (stplyr->kartstuff[k_lightning] == 1) localpatch = kp_lightning; - else if (stplyr->kartstuff[k_tripleredshell] & 8) localpatch = kp_tripleredshell; + else if (stplyr->kartstuff[k_tripleredshell]) localpatch = kp_tripleredshell; // &8 else if (stplyr->kartstuff[k_fireflower] == 1) localpatch = kp_fireflower; else if (stplyr->kartstuff[k_blueshell] == 1) localpatch = kp_blueshell; - else if (stplyr->kartstuff[k_bobomb] & 2) localpatch = kp_bobomb; - else if (stplyr->kartstuff[k_triplegreenshell] & 8) localpatch = kp_triplegreenshell; - else if (stplyr->kartstuff[k_redshell] & 2) localpatch = kp_redshell; - else if (stplyr->kartstuff[k_greenshell] & 2) localpatch = kp_greenshell; - else if (stplyr->kartstuff[k_banana] & 2) localpatch = kp_banana; + else if (stplyr->kartstuff[k_bobomb]) localpatch = kp_bobomb; // &2 + else if (stplyr->kartstuff[k_triplegreenshell]) localpatch = kp_triplegreenshell; // &8 + else if (stplyr->kartstuff[k_redshell]) localpatch = kp_redshell; // &2 + else if (stplyr->kartstuff[k_greenshell]) localpatch = kp_greenshell; // &2 + else if (stplyr->kartstuff[k_banana]) localpatch = kp_banana; // &2 else if (stplyr->kartstuff[k_fakeitem] & 2) localpatch = kp_fakeitem; - else if (stplyr->kartstuff[k_triplebanana] & 8) localpatch = kp_triplebanana; + else if (stplyr->kartstuff[k_triplebanana]) localpatch = kp_triplebanana; // &8 else if (stplyr->kartstuff[k_star] == 1) localpatch = kp_star; else if (stplyr->kartstuff[k_goldshroom] == 1 || (stplyr->kartstuff[k_goldshroomtimer] > 1 && (leveltime & 1))) localpatch = kp_goldshroom; @@ -3789,7 +3789,7 @@ void K_drawKartHUD(void) // Draw the little triple-item icons at the bottom if (!splitscreen) { - K_DrawKartTripleItem(); + //K_DrawKartTripleItem(); K_DrawKartPositionFaces(); } diff --git a/src/p_enemy.c b/src/p_enemy.c index a1058cc0..cf587af9 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -742,7 +742,7 @@ static boolean P_LookForShield(mobj_t *actor) // SRB2kart - magnet item if (player->kartstuff[k_magnettimer] //(player->powers[pw_shield] & SH_NOSTACK) == SH_ATTRACT - && (P_AproxDistance(P_AproxDistance(actor->x-player->mo->x, actor->y-player->mo->y), actor->z-player->mo->z) < FixedMul(RING_DIST/2, player->mo->scale))) + && (P_AproxDistance(P_AproxDistance(actor->x-player->mo->x, actor->y-player->mo->y), actor->z-player->mo->z) < FixedMul(RING_DIST/4, player->mo->scale))) { P_SetTarget(&actor->tracer, player->mo); return true; @@ -8125,7 +8125,7 @@ void A_ItemPop(mobj_t *actor) && !(actor->target->player->kartstuff[k_greenshell] || actor->target->player->kartstuff[k_triplegreenshell] || actor->target->player->kartstuff[k_redshell] || actor->target->player->kartstuff[k_tripleredshell] || actor->target->player->kartstuff[k_banana] || actor->target->player->kartstuff[k_triplebanana] - || actor->target->player->kartstuff[k_fakeitem] || actor->target->player->kartstuff[k_magnet] + || actor->target->player->kartstuff[k_fakeitem] & 2 || actor->target->player->kartstuff[k_magnet] || actor->target->player->kartstuff[k_bobomb] || actor->target->player->kartstuff[k_blueshell] || actor->target->player->kartstuff[k_mushroom] || actor->target->player->kartstuff[k_fireflower] || actor->target->player->kartstuff[k_star] || actor->target->player->kartstuff[k_goldshroom] diff --git a/src/p_user.c b/src/p_user.c index 28b17acc..eb66ecc9 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -7690,8 +7690,8 @@ void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius) if (mo->flags & MF_MONITOR) continue; // Monitors cannot be 'nuked'. - if (!G_RingSlingerGametype() && mo->type == MT_PLAYER) - continue; // Don't hurt players in Co-Op! + //if (!G_RingSlingerGametype() && mo->type == MT_PLAYER) + // continue; // Don't hurt players in Co-Op! if (abs(inflictor->x - mo->x) > radius || abs(inflictor->y - mo->y) > radius || abs(inflictor->z - mo->z) > radius) continue; // Workaround for possible integer overflow in the below -Red @@ -7705,8 +7705,37 @@ void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius) if (mo->type == MT_EGGGUARD && mo->tracer) //nuke Egg Guard's shield! P_KillMobj(mo->tracer, inflictor, source); - if (mo->flags & MF_BOSS || mo->type == MT_PLAYER) //don't OHKO bosses nor players! - continue; // SRB2kart - P_Nuke is for magnet (for now), and doesn't hurt other players, only obstacles. // P_DamageMobj(mo, inflictor, source, 1); + if (mo->flags & MF_BOSS) //don't OHKO bosses! + P_DamageMobj(mo, inflictor, source, 1); + + //{ SRB2kart + if (mo->type == MT_GREENITEM || mo->type == MT_REDITEM || mo->type == MT_REDITEMDUD + || mo->type == MT_GREENSHIELD || mo->type == MT_REDSHIELD + || mo->type == MT_TRIPLEGREENSHIELD1 || mo->type == MT_TRIPLEGREENSHIELD2 || mo->type == MT_TRIPLEGREENSHIELD3 + || mo->type == MT_TRIPLEREDSHIELD1 || mo->type == MT_TRIPLEREDSHIELD2 || mo->type == MT_TRIPLEREDSHIELD3 + || mo->type == MT_BANANAITEM || mo->type == MT_BANANASHIELD + || mo->type == MT_TRIPLEBANANASHIELD1 || mo->type == MT_TRIPLEBANANASHIELD2 || mo->type == MT_TRIPLEBANANASHIELD3 + || mo->type == MT_FAKEITEM || mo->type == MT_FAKESHIELD + || mo->type == MT_FIREBALL) + { + if (mo->eflags & MFE_VERTICALFLIP) + mo->z -= mo->height; + else + mo->z += mo->height; + + S_StartSound(mo, mo->info->deathsound); + P_KillMobj(mo, inflictor, source); + + P_SetObjectMomZ(mo, 8*FRACUNIT, false); + P_InstaThrust(mo, R_PointToAngle2(inflictor->x, inflictor->y, mo->x, mo->y)+ANGLE_90, 16*FRACUNIT); + } + + if (mo == inflictor) // Don't nuke yourself, dummy! + continue; + + if (mo->type == MT_PLAYER) // Players wipe out in Kart + K_SpinPlayer(mo->player, source); + //} else P_DamageMobj(mo, inflictor, source, 1000); }