-------
Accelcode now factors in forwardmove value rather than a boolean. This is used to enable clutching (or whatever you call it; accel+brake) to give its own result.
Fixed Thwomps killing players rather than crushing them.
Reverted buggy collision experiment from previous version.
This commit is contained in:
ZTsukei 2017-04-19 21:04:44 -04:00
parent 74589aaea8
commit 04432f7789
6 changed files with 37 additions and 33 deletions

View File

@ -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 #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 103 // Game version #define VERSION 103 // Game version
#define SUBVERSION 9 // more precise version number #define SUBVERSION 10 // more precise version number
#define VERSIONSTRING "Development EXE" #define VERSIONSTRING "Development EXE"
#define VERSIONSTRINGW "v1.3.09" #define VERSIONSTRINGW "v1.3.10"
// 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 103 // Game version #define VERSION 103 // Game version
#define SUBVERSION 9 // more precise version number #define SUBVERSION 10 // more precise version number
#define VERSIONSTRING "DevEXE v1.3.09" #define VERSIONSTRING "DevEXE v1.3.10"
#define VERSIONSTRINGW L"v1.3.09" #define VERSIONSTRINGW L"v1.3.10"
// 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

@ -1055,12 +1055,12 @@ void G_BuildTiccmd(ticcmd_t *cmd, INT32 realtics)
if (PLAYER1INPUTDOWN(gc_accelerate) || player->kartstuff[k_mushroomtimer]) if (PLAYER1INPUTDOWN(gc_accelerate) || player->kartstuff[k_mushroomtimer])
{ {
cmd->buttons |= BT_ACCELERATE; cmd->buttons |= BT_ACCELERATE;
forward = forwardmove[speed]; forward = forwardmove[1]; // 50
} }
if (PLAYER1INPUTDOWN(gc_brake) && !player->kartstuff[k_mushroomtimer]) if (PLAYER1INPUTDOWN(gc_brake))
{ {
cmd->buttons |= BT_BRAKE; cmd->buttons |= BT_BRAKE;
forward -= forwardmove[speed]; forward -= forwardmove[0]; // 25 - Halved value so clutching is possible
} }
// But forward/backward IS used for aiming. // But forward/backward IS used for aiming.
axis = JoyAxis(AXISMOVE); axis = JoyAxis(AXISMOVE);
@ -1400,15 +1400,15 @@ void G_BuildTiccmd2(ticcmd_t *cmd, INT32 realtics)
*/ */
// forward with key or button // forward with key or button
if (PLAYER2INPUTDOWN(gc_accelerate)) if (PLAYER2INPUTDOWN(gc_accelerate) || player->kartstuff[k_mushroomtimer])
{ {
cmd->buttons |= BT_ACCELERATE; cmd->buttons |= BT_ACCELERATE;
forward = forwardmove[speed]; forward = forwardmove[1];
} }
if (PLAYER2INPUTDOWN(gc_brake)) if (PLAYER2INPUTDOWN(gc_brake))
{ {
cmd->buttons |= BT_BRAKE; cmd->buttons |= BT_BRAKE;
forward -= forwardmove[speed]; forward -= forwardmove[0];
} }
// forward/backward is used for aiming. // forward/backward is used for aiming.
axis = Joy2Axis(AXISMOVE); axis = Joy2Axis(AXISMOVE);

View File

@ -939,10 +939,10 @@ void K_SwapMomentum(mobj_t *mobj1, mobj_t *mobj2, boolean bounce)
fixed_t m1w = 15 + mobj1->player->kartweight; fixed_t m1w = 15 + mobj1->player->kartweight;
fixed_t m2w = 15 + mobj2->player->kartweight; fixed_t m2w = 15 + mobj2->player->kartweight;
newx = FixedMul(mobj1->momy, FixedDiv(m1w*FRACUNIT, m2w*FRACUNIT)); newx = FixedMul(mobj1->momx, FixedDiv(m1w*FRACUNIT, m2w*FRACUNIT));
newy = FixedMul(mobj1->momx, FixedDiv(m1w*FRACUNIT, m2w*FRACUNIT)); newy = FixedMul(mobj1->momy, FixedDiv(m1w*FRACUNIT, m2w*FRACUNIT));
mobj1->momx = FixedMul(mobj2->momy, FixedDiv(m2w*FRACUNIT, m1w*FRACUNIT)); mobj1->momx = FixedMul(mobj2->momx, FixedDiv(m2w*FRACUNIT, m1w*FRACUNIT));
mobj1->momy = FixedMul(mobj2->momx, FixedDiv(m2w*FRACUNIT, m1w*FRACUNIT)); mobj1->momy = FixedMul(mobj2->momy, FixedDiv(m2w*FRACUNIT, m1w*FRACUNIT));
} }
else else
{ {
@ -1313,7 +1313,7 @@ static fixed_t K_GetKartAccel(player_t *player)
return FixedMul(k_accel, K_GetKartBoostPower(player, false)); return FixedMul(k_accel, K_GetKartBoostPower(player, false));
} }
fixed_t K_3dKartMovement(player_t *player, boolean onground, boolean forwardmovement) fixed_t K_3dKartMovement(player_t *player, boolean onground, fixed_t forwardmove)
{ {
fixed_t accelmax = 4000; fixed_t accelmax = 4000;
fixed_t newspeed, oldspeed, finalspeed; fixed_t newspeed, oldspeed, finalspeed;
@ -1327,10 +1327,19 @@ fixed_t K_3dKartMovement(player_t *player, boolean onground, boolean forwardmove
newspeed = FixedDiv(FixedDiv(FixedMul(oldspeed, accelmax - p_accel) + FixedMul(p_speed, p_accel), accelmax), ORIG_FRICTION); newspeed = FixedDiv(FixedDiv(FixedMul(oldspeed, accelmax - p_accel) + FixedMul(p_speed, p_accel), accelmax), ORIG_FRICTION);
finalspeed = newspeed - oldspeed; finalspeed = newspeed - oldspeed;
if (!forwardmovement && finalspeed > FRACUNIT*2) // forwardmove is:
return FRACUNIT/8; // 50 while accelerating,
else if (!forwardmovement) // 25 while clutching,
return FRACUNIT/2; // 0 with no gas, and
// -25 when only braking.
finalspeed *= forwardmove/25;
finalspeed /= 2;
if (forwardmove < 0 && finalspeed > FRACUNIT*2)
return finalspeed/2;
else if (forwardmove < 0)
return -FRACUNIT/2;
if (finalspeed < 0) if (finalspeed < 0)
finalspeed = 0; finalspeed = 0;

View File

@ -26,7 +26,7 @@ void K_DoMushroom(player_t *player, boolean doPFlag);
INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue); INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue);
void K_MomentumToFacing(player_t *player); void K_MomentumToFacing(player_t *player);
fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower); fixed_t K_GetKartSpeed(player_t *player, boolean doboostpower);
fixed_t K_3dKartMovement(player_t *player, boolean onground, boolean forwardmovement); fixed_t K_3dKartMovement(player_t *player, boolean onground, fixed_t forwardmove);
void K_MoveKartPlayer(player_t *player, boolean onground); void K_MoveKartPlayer(player_t *player, boolean onground);
void K_LoadKartHUDGraphics(void); void K_LoadKartHUDGraphics(void);

View File

@ -3938,7 +3938,7 @@ static boolean PIT_ChangeSector(mobj_t *thing, boolean realcrush)
killer = P_SpawnMobj(thing->x, thing->y, thing->z, MT_NULL); killer = P_SpawnMobj(thing->x, thing->y, thing->z, MT_NULL);
killer->threshold = 44; // Special flag for crushing killer->threshold = 44; // Special flag for crushing
} }
if (thing->player) if (!thing->player)
P_DamageMobj(thing, killer, killer, 10000); P_DamageMobj(thing, killer, killer, 10000);
else else
K_SquishPlayer(thing->player, killer); // SRB2kart - Squish instead of kill K_SquishPlayer(thing->player, killer); // SRB2kart - Squish instead of kill

View File

@ -4750,14 +4750,12 @@ static void P_3dMovement(player_t *player)
} }
} }
else if (!analogmove else if (!analogmove
&& cmd->forwardmove != 0 && !(player->pflags & PF_GLIDING || player->exiting //&& cmd->forwardmove != 0
&& !(player->pflags & PF_GLIDING || player->exiting
|| (P_PlayerInPain(player) && !onground))) || (P_PlayerInPain(player) && !onground)))
{ {
//movepushforward = cmd->forwardmove * (thrustfactor * acceleration); //movepushforward = cmd->forwardmove * (thrustfactor * acceleration);
if (cmd->forwardmove > 0) movepushforward = K_3dKartMovement(player, onground, cmd->forwardmove);
movepushforward = K_3dKartMovement(player, onground, true);
else
movepushforward = -(K_3dKartMovement(player, onground, false));
// allow very small movement while in air for gameplay // allow very small movement while in air for gameplay
if (!onground) if (!onground)
@ -4815,10 +4813,7 @@ static void P_3dMovement(player_t *player)
controldirection = R_PointToAngle2(0, 0, cmd->forwardmove*FRACUNIT, -cmd->sidemove*FRACUNIT)+movepushangle; controldirection = R_PointToAngle2(0, 0, cmd->forwardmove*FRACUNIT, -cmd->sidemove*FRACUNIT)+movepushangle;
//movepushforward = max(abs(cmd->sidemove), abs(cmd->forwardmove)) * (thrustfactor * acceleration); //movepushforward = max(abs(cmd->sidemove), abs(cmd->forwardmove)) * (thrustfactor * acceleration);
if (max(abs(cmd->sidemove), abs(cmd->forwardmove)) > 0) movepushforward = K_3dKartMovement(player, onground, max(abs(cmd->sidemove), abs(cmd->forwardmove)));
movepushforward = K_3dKartMovement(player, onground, true);
else
movepushforward = -(K_3dKartMovement(player, onground, false));
// allow very small movement while in air for gameplay // allow very small movement while in air for gameplay
if (!onground) if (!onground)
@ -4857,9 +4852,9 @@ static void P_3dMovement(player_t *player)
{ {
//movepushside = cmd->sidemove * (thrustfactor * acceleration); //movepushside = cmd->sidemove * (thrustfactor * acceleration);
if (cmd->sidemove > 0) if (cmd->sidemove > 0)
movepushside = K_3dKartMovement(player, onground, true); movepushside = K_3dKartMovement(player, onground, 50);
else else
movepushside = -(K_3dKartMovement(player, onground, true)); movepushside = -(K_3dKartMovement(player, onground, 50));
if (!onground) if (!onground)
{ {