From e6305ece3863f58fb13571c5f83953bd8fc96bfa Mon Sep 17 00:00:00 2001 From: ZTsukei Date: Sun, 16 Apr 2017 20:43:30 -0400 Subject: [PATCH] v1.3.02 ------- Diagonal springs now keep your current speed if you are faster than their set speed. This only affects players for now. Offroad is no longer handled by &256, and is now handled by &2, &3, &4; Damage (Damage (Water), Damage (Fire), and Damage (Electric)) Starpost mobj radius and height have been reduced to 1*FRACUNIT, this should fix the checkpoint infinispawn bug. --- src/doomdef.h | 10 +++++----- src/info.c | 4 ++-- src/k_kart.c | 19 +++++++++++++++---- src/p_map.c | 15 ++++++++++++++- src/p_spec.c | 10 +--------- 5 files changed, 37 insertions(+), 21 deletions(-) diff --git a/src/doomdef.h b/src/doomdef.h index 44a2f8125..3787f055a 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 1 // more precise version number +#define SUBVERSION 2 // more precise version number #define VERSIONSTRING "Development EXE" -#define VERSIONSTRINGW "v1.3.01" +#define VERSIONSTRINGW "v1.3.02" // most interface strings are ignored in development mode. // we use comprevision and compbranch instead. #else #define VERSION 103 // Game version -#define SUBVERSION 1 // more precise version number -#define VERSIONSTRING "DevEXE v1.3.01" -#define VERSIONSTRINGW L"v1.3.01" +#define SUBVERSION 2 // more precise version number +#define VERSIONSTRING "DevEXE v1.3.02" +#define VERSIONSTRINGW L"v1.3.02" // Hey! If you change this, add 1 to the MODVERSION below! // Otherwise we can't force updates! #endif diff --git a/src/info.c b/src/info.c index 7e4ff9580..f220350a6 100644 --- a/src/info.c +++ b/src/info.c @@ -5656,8 +5656,8 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = S_NULL, // xdeathstate sfx_None, // deathsound 8, // speed - 64*FRACUNIT, // radius - 80*FRACUNIT, // height + 1*FRACUNIT, // radius + 1*FRACUNIT, // height 0, // display offset 4, // mass 0, // damage diff --git a/src/k_kart.c b/src/k_kart.c index 1f58ae14e..2c09eedb1 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -914,8 +914,19 @@ static void K_UpdateOffroad(player_t *player) sector_t *nextsector = R_PointInSubsector( player->mo->x + player->mo->momx*2, player->mo->y + player->mo->momy*2)->sector; + fixed_t offroadstrength = 0; + + if (nextsector->special & 2) // Weak Offroad + offroadstrength = 1; + else if (nextsector->special & 3) // Mid Offroad + offroadstrength = 2; + else if (nextsector->special & 4) // Strong Offroad + offroadstrength = 3; + // If you are offroad, a timer starts. Depending on your weight value, the timer increments differently. - if ((nextsector->special & 256) && nextsector->special != 768 && nextsector->special != 1024 && nextsector->special != 4864) + //if ((nextsector->special & 256) && nextsector->special != 768 + // && nextsector->special != 1024 && nextsector->special != 4864) + if (offroadstrength) { if (K_CheckOffroadCollide(player->mo) && player->kartstuff[k_offroad] == 0) player->kartstuff[k_offroad] = 16; @@ -925,7 +936,7 @@ static void K_UpdateOffroad(player_t *player) // 1872 is the magic number - 35 frames adds up to approximately 65536. 1872/4 = 468/3 = 156 // A higher kart weight means you can stay offroad for longer without losing speed - offroad = (1872 + 5*156 - kartweight*156)*2; + offroad = (1872 + 5*156 - kartweight*156)*offroadstrength; if (player->kartstuff[k_growshrinktimer] > 1) // megashroom slows down half as fast offroad /= 2; @@ -933,8 +944,8 @@ static void K_UpdateOffroad(player_t *player) player->kartstuff[k_offroad] += offroad; } - if (player->kartstuff[k_offroad] > FRACUNIT*2) - player->kartstuff[k_offroad] = FRACUNIT*2; + if (player->kartstuff[k_offroad] > FRACUNIT*offroadstrength) + player->kartstuff[k_offroad] = FRACUNIT*offroadstrength; } else player->kartstuff[k_offroad] = 0; diff --git a/src/p_map.c b/src/p_map.c index f6689026e..99f4e1889 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -181,7 +181,20 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) object->momz = FixedMul(vertispeed,FixedSqrt(FixedMul(object->scale, spring->scale))); if (horizspeed) - P_InstaThrustEvenIn2D(object, spring->angle, FixedMul(horizspeed,FixedSqrt(FixedMul(object->scale, spring->scale)))); + { + if (!object->player) + P_InstaThrustEvenIn2D(object, spring->angle, FixedMul(horizspeed,FixedSqrt(FixedMul(object->scale, spring->scale)))); + else + { + fixed_t finalSpeed = horizspeed; + fixed_t pSpeed = object->player->speed; + + if (pSpeed > finalSpeed) + finalSpeed = pSpeed; + + P_InstaThrustEvenIn2D(object, spring->angle, FixedMul(finalSpeed,FixedSqrt(FixedMul(object->scale, spring->scale)))); + } + } // Re-solidify spring->flags |= (spring->info->flags & (MF_SPECIAL|MF_SOLID)); diff --git a/src/p_spec.c b/src/p_spec.c index 3d5800154..4ddd7bb7b 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -3529,17 +3529,9 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers if (roversector || P_MobjReadyToTrigger(player->mo, sector)) P_DamageMobj(player->mo, NULL, NULL, 1); break; - case 2: // Damage (Water) - if ((roversector || P_MobjReadyToTrigger(player->mo, sector)) && (player->powers[pw_underwater] || player->pflags & PF_NIGHTSMODE) && (player->powers[pw_shield] & SH_NOSTACK) != SH_ELEMENTAL) - P_DamageMobj(player->mo, NULL, NULL, 1); - break; + case 2: // Damage (Water) // SRB2kart - These three damage types are now offroad sectors case 3: // Damage (Fire) - if ((roversector || P_MobjReadyToTrigger(player->mo, sector)) && (player->powers[pw_shield] & SH_NOSTACK) != SH_ELEMENTAL) - P_DamageMobj(player->mo, NULL, NULL, 1); - break; case 4: // Damage (Electrical) - if ((roversector || P_MobjReadyToTrigger(player->mo, sector)) && (player->powers[pw_shield] & SH_NOSTACK) != SH_ATTRACT) - P_DamageMobj(player->mo, NULL, NULL, 1); break; case 5: // Spikes // Don't do anything. In Soviet Russia, spikes find you.