mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-01-17 23:21:05 +00:00
Finish this
Now that I was told that the spinout slowdown bug was caused by this I was 100% convinced that we need to remove all of this bullshit ASAP
This commit is contained in:
parent
7bfc394792
commit
4d967bcc8e
4 changed files with 18 additions and 467 deletions
13
src/g_game.c
13
src/g_game.c
|
@ -5489,8 +5489,21 @@ void G_BeginRecording(void)
|
|||
demo_p += 16;
|
||||
|
||||
// Stats
|
||||
demo_p++; // charability
|
||||
demo_p++; // charability2
|
||||
demo_p++; // actionspd
|
||||
demo_p++; // mindash
|
||||
demo_p++; // maxdash
|
||||
// SRB2Kart
|
||||
WRITEUINT8(demo_p,player->kartspeed);
|
||||
WRITEUINT8(demo_p,player->kartweight);
|
||||
//
|
||||
demo_p++; // normalspeed
|
||||
demo_p++; // runspeed
|
||||
demo_p++; // thrustfactor
|
||||
demo_p++; // accelstart
|
||||
demo_p++; // acceleration
|
||||
demo_p += 4; // jumpfactor
|
||||
|
||||
// Save netvar data (SONICCD, etc)
|
||||
CV_SaveNetVars(&demo_p);
|
||||
|
|
|
@ -946,29 +946,6 @@ static int lib_pHomingAttack(lua_State *L)
|
|||
return 1;
|
||||
}*/
|
||||
|
||||
static int lib_pSpawnThokMobj(lua_State *L)
|
||||
{
|
||||
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||
NOHUD
|
||||
if (!player)
|
||||
return LUA_ErrInvalid(L, "player_t");
|
||||
P_SpawnThokMobj(player);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int lib_pSpawnSpinMobj(lua_State *L)
|
||||
{
|
||||
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||
mobjtype_t type = luaL_checkinteger(L, 2);
|
||||
NOHUD
|
||||
if (!player)
|
||||
return LUA_ErrInvalid(L, "player_t");
|
||||
if (type >= NUMMOBJTYPES)
|
||||
return luaL_error(L, "mobj type %d out of range (0 - %d)", type, NUMMOBJTYPES-1);
|
||||
P_SpawnSpinMobj(player, type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int lib_pTelekinesis(lua_State *L)
|
||||
{
|
||||
player_t *player = *((player_t **)luaL_checkudata(L, 1, META_PLAYER));
|
||||
|
@ -2634,8 +2611,6 @@ static luaL_Reg lib[] = {
|
|||
{"P_NukeEnemies",lib_pNukeEnemies},
|
||||
{"P_HomingAttack",lib_pHomingAttack},
|
||||
//{"P_SuperReady",lib_pSuperReady},
|
||||
{"P_SpawnThokMobj",lib_pSpawnThokMobj},
|
||||
{"P_SpawnSpinMobj",lib_pSpawnSpinMobj},
|
||||
{"P_Telekinesis",lib_pTelekinesis},
|
||||
|
||||
// p_map
|
||||
|
|
|
@ -186,8 +186,6 @@ UINT8 P_FindHighestLap(void);
|
|||
void P_FindEmerald(void);
|
||||
//void P_TransferToAxis(player_t *player, INT32 axisnum);
|
||||
boolean P_PlayerMoving(INT32 pnum);
|
||||
void P_SpawnThokMobj(player_t *player);
|
||||
void P_SpawnSpinMobj(player_t *player, mobjtype_t type);
|
||||
void P_Telekinesis(player_t *player, fixed_t thrust, fixed_t range);
|
||||
|
||||
void P_PlayLivesJingle(player_t *player);
|
||||
|
|
445
src/p_user.c
445
src/p_user.c
|
@ -1653,113 +1653,6 @@ mobj_t *P_SpawnGhostMobj(mobj_t *mobj)
|
|||
return ghost;
|
||||
}
|
||||
|
||||
//
|
||||
// P_SpawnThokMobj
|
||||
//
|
||||
// Spawns the appropriate thok object on the player
|
||||
//
|
||||
void P_SpawnThokMobj(player_t *player)
|
||||
{
|
||||
mobj_t *mobj;
|
||||
mobjtype_t type = player->thokitem;
|
||||
fixed_t zheight;
|
||||
|
||||
if (player->skincolor == 0)
|
||||
return;
|
||||
|
||||
if (player->spectator)
|
||||
return;
|
||||
|
||||
if (type == MT_GHOST)
|
||||
mobj = P_SpawnGhostMobj(player->mo); // virtually does everything here for us
|
||||
else
|
||||
{
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
zheight = player->mo->z + player->mo->height + FixedDiv(P_GetPlayerHeight(player) - player->mo->height, 3*FRACUNIT) - FixedMul(mobjinfo[type].height, player->mo->scale);
|
||||
else
|
||||
zheight = player->mo->z - FixedDiv(P_GetPlayerHeight(player) - player->mo->height, 3*FRACUNIT);
|
||||
|
||||
if (!(player->mo->eflags & MFE_VERTICALFLIP) && zheight < player->mo->floorz && !(mobjinfo[type].flags & MF_NOCLIPHEIGHT))
|
||||
zheight = player->mo->floorz;
|
||||
else if (player->mo->eflags & MFE_VERTICALFLIP && zheight + FixedMul(mobjinfo[type].height, player->mo->scale) > player->mo->ceilingz && !(mobjinfo[type].flags & MF_NOCLIPHEIGHT))
|
||||
zheight = player->mo->ceilingz - FixedMul(mobjinfo[type].height, player->mo->scale);
|
||||
|
||||
mobj = P_SpawnMobj(player->mo->x, player->mo->y, zheight, type);
|
||||
|
||||
// set to player's angle, just in case
|
||||
mobj->angle = player->mo->angle;
|
||||
|
||||
// color and skin
|
||||
mobj->color = player->mo->color;
|
||||
mobj->skin = player->mo->skin;
|
||||
|
||||
// vertical flip
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
mobj->flags2 |= MF2_OBJECTFLIP;
|
||||
mobj->eflags |= (player->mo->eflags & MFE_VERTICALFLIP);
|
||||
|
||||
// scale
|
||||
P_SetScale(mobj, player->mo->scale);
|
||||
mobj->destscale = player->mo->scale;
|
||||
}
|
||||
|
||||
P_SetTarget(&mobj->target, player->mo); // the one thing P_SpawnGhostMobj doesn't do
|
||||
if (demorecording)
|
||||
G_GhostAddThok();
|
||||
}
|
||||
|
||||
//
|
||||
// P_SpawnSpinMobj
|
||||
//
|
||||
// Spawns the appropriate spin object on the player
|
||||
//
|
||||
void P_SpawnSpinMobj(player_t *player, mobjtype_t type)
|
||||
{
|
||||
mobj_t *mobj;
|
||||
fixed_t zheight;
|
||||
|
||||
if (player->skincolor == 0)
|
||||
return;
|
||||
|
||||
if (player->spectator)
|
||||
return;
|
||||
|
||||
if (type == MT_GHOST)
|
||||
mobj = P_SpawnGhostMobj(player->mo); // virtually does everything here for us
|
||||
else
|
||||
{
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
zheight = player->mo->z + player->mo->height + FixedDiv(P_GetPlayerHeight(player) - player->mo->height, 3*FRACUNIT) - FixedMul(mobjinfo[type].height, player->mo->scale);
|
||||
else
|
||||
zheight = player->mo->z - FixedDiv(P_GetPlayerHeight(player) - player->mo->height, 3*FRACUNIT);
|
||||
|
||||
if (!(player->mo->eflags & MFE_VERTICALFLIP) && zheight < player->mo->floorz && !(mobjinfo[type].flags & MF_NOCLIPHEIGHT))
|
||||
zheight = player->mo->floorz;
|
||||
else if (player->mo->eflags & MFE_VERTICALFLIP && zheight + FixedMul(mobjinfo[type].height, player->mo->scale) > player->mo->ceilingz && !(mobjinfo[type].flags & MF_NOCLIPHEIGHT))
|
||||
zheight = player->mo->ceilingz - FixedMul(mobjinfo[type].height, player->mo->scale);
|
||||
|
||||
mobj = P_SpawnMobj(player->mo->x, player->mo->y, zheight, type);
|
||||
|
||||
// set to player's angle, just in case
|
||||
mobj->angle = player->mo->angle;
|
||||
|
||||
// color and skin
|
||||
mobj->color = player->mo->color;
|
||||
mobj->skin = player->mo->skin;
|
||||
|
||||
// vertical flip
|
||||
if (player->mo->eflags & MFE_VERTICALFLIP)
|
||||
mobj->flags2 |= MF2_OBJECTFLIP;
|
||||
mobj->eflags |= (player->mo->eflags & MFE_VERTICALFLIP);
|
||||
|
||||
// scale
|
||||
P_SetScale(mobj, player->mo->scale);
|
||||
mobj->destscale = player->mo->scale;
|
||||
}
|
||||
|
||||
P_SetTarget(&mobj->target, player->mo); // the one thing P_SpawnGhostMobj doesn't do
|
||||
}
|
||||
|
||||
//
|
||||
// P_DoPlayerExit
|
||||
//
|
||||
|
@ -3815,338 +3708,10 @@ void P_Telekinesis(player_t *player, fixed_t thrust, fixed_t range)
|
|||
}
|
||||
}
|
||||
|
||||
P_SpawnThokMobj(player);
|
||||
//P_SpawnThokMobj(player);
|
||||
player->pflags |= PF_THOKKED;
|
||||
}
|
||||
|
||||
//
|
||||
// P_DoJumpStuff
|
||||
//
|
||||
// Handles player jumping
|
||||
//
|
||||
static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
|
||||
{
|
||||
if (player->pflags & PF_JUMPSTASIS)
|
||||
return;
|
||||
|
||||
if (cmd->buttons & BT_BRAKE && !(player->pflags & PF_JUMPDOWN) && !player->exiting && !P_PlayerInPain(player))
|
||||
{
|
||||
if (onground || player->climbing || player->pflags & (PF_CARRIED|PF_ITEMHANG|PF_ROPEHANG))
|
||||
{}
|
||||
else if (player->pflags & PF_MACESPIN && player->mo->tracer)
|
||||
{}
|
||||
else if (!(player->pflags & PF_SLIDING) && ((gametype != GT_CTF) || (!player->gotflag)))
|
||||
{
|
||||
#ifdef HAVE_BLUA
|
||||
if (!LUAh_JumpSpinSpecial(player))
|
||||
#endif
|
||||
/*switch (player->charability)
|
||||
{
|
||||
case CA_TELEKINESIS:
|
||||
if (player->pflags & PF_JUMPED)
|
||||
{
|
||||
if (!(player->pflags & PF_THOKKED) || (player->charability2 == CA2_MULTIABILITY))
|
||||
{
|
||||
P_Telekinesis(player,
|
||||
-FixedMul(player->actionspd, player->mo->scale), // -ve thrust (pulling towards player)
|
||||
FixedMul(384*FRACUNIT, player->mo->scale));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case CA_AIRDRILL:
|
||||
if (player->pflags & PF_JUMPED)
|
||||
{
|
||||
if (player->pflags & PF_THOKKED) // speed up falling down
|
||||
{
|
||||
if (player->secondjump < 42)
|
||||
player->secondjump ++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
/*if (player->charability == CA_AIRDRILL)
|
||||
{
|
||||
if (player->pflags & PF_JUMPED)
|
||||
{
|
||||
if (player->flyangle > 0 && player->pflags & PF_THOKKED)
|
||||
{
|
||||
player->flyangle--;
|
||||
|
||||
P_SetObjectMomZ(player->mo, ((player->flyangle-24 - player->secondjump*3)*((player->actionspd>>FRACBITS)/12 + 1)<<FRACBITS)/7, false);
|
||||
|
||||
P_SpawnThokMobj(player);
|
||||
|
||||
if ((player->mo->eflags & MFE_UNDERWATER))
|
||||
P_InstaThrust(player->mo, player->mo->angle, FixedMul(player->normalspeed, player->mo->scale)*(80-player->flyangle - (player->actionspd>>FRACBITS)/2)/80);
|
||||
else
|
||||
P_InstaThrust(player->mo, player->mo->angle, ((FixedMul(player->normalspeed - player->actionspd/4, player->mo->scale))*2)/3);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
if (cmd->buttons & BT_DRIFT && !player->exiting && !P_PlayerInPain(player))
|
||||
{
|
||||
#ifdef HAVE_BLUA
|
||||
if (LUAh_JumpSpecial(player))
|
||||
;
|
||||
else
|
||||
#endif
|
||||
if (player->pflags & PF_JUMPDOWN) // all situations below this require jump button not to be pressed already
|
||||
;
|
||||
else
|
||||
// Jump S3&K style while in quicksand.
|
||||
if (P_InQuicksand(player->mo))
|
||||
{
|
||||
//P_DoJump(player, true);
|
||||
player->secondjump = 0;
|
||||
player->pflags &= ~PF_THOKKED;
|
||||
}
|
||||
else
|
||||
// can't jump while in air, can't jump while jumping
|
||||
if (onground || player->climbing || player->pflags & (PF_CARRIED|PF_ITEMHANG|PF_ROPEHANG))
|
||||
{
|
||||
//P_DoJump(player, true);
|
||||
player->secondjump = 0;
|
||||
player->pflags &= ~PF_THOKKED;
|
||||
}
|
||||
/* // SRB2kart - no jumpy power things
|
||||
else if (player->pflags & PF_MACESPIN && player->mo->tracer)
|
||||
{
|
||||
player->pflags &= ~PF_MACESPIN;
|
||||
player->powers[pw_flashing] = TICRATE/4;
|
||||
}
|
||||
else if (player->pflags & PF_SLIDING || (gametype == GT_CTF && player->gotflag))
|
||||
;
|
||||
else if (P_SuperReady(player))
|
||||
{
|
||||
// If you can turn super and aren't already,
|
||||
// and you don't have a shield, do it!
|
||||
P_DoSuperTransformation(player, false);
|
||||
}
|
||||
else if (player->pflags & PF_JUMPED)
|
||||
{
|
||||
#ifdef HAVE_BLUA
|
||||
if (!LUAh_AbilitySpecial(player))
|
||||
#endif
|
||||
switch (player->charability)
|
||||
{
|
||||
case CA_THOK:
|
||||
case CA_HOMINGTHOK:
|
||||
case CA_JUMPTHOK: // Credit goes to CZ64 and Sryder13 for the original
|
||||
// Now it's Sonic's abilities turn!
|
||||
// THOK!
|
||||
if (!(player->pflags & PF_THOKKED) || (player->charability2 == CA2_MULTIABILITY))
|
||||
{
|
||||
// Catapult the player
|
||||
fixed_t actionspd = player->actionspd;
|
||||
if (player->mo->eflags & MFE_UNDERWATER)
|
||||
actionspd >>= 1;
|
||||
if ((player->charability == CA_JUMPTHOK) && !(player->pflags & PF_THOKKED))
|
||||
{
|
||||
player->pflags &= ~PF_JUMPED;
|
||||
P_DoJump(player, false);
|
||||
}
|
||||
P_InstaThrust(player->mo, player->mo->angle, FixedMul(actionspd, player->mo->scale));
|
||||
|
||||
if (maptol & TOL_2D)
|
||||
{
|
||||
player->mo->momx /= 2;
|
||||
player->mo->momy /= 2;
|
||||
}
|
||||
else if (player->charability == CA_HOMINGTHOK)
|
||||
{
|
||||
player->mo->momx /= 3;
|
||||
player->mo->momy /= 3;
|
||||
}
|
||||
|
||||
if (player->mo->info->attacksound && !player->spectator)
|
||||
S_StartSound(player->mo, player->mo->info->attacksound); // Play the THOK sound
|
||||
|
||||
P_SpawnThokMobj(player);
|
||||
|
||||
if (player->charability == CA_HOMINGTHOK && !player->homing)
|
||||
{
|
||||
if (P_LookForEnemies(player))
|
||||
{
|
||||
if (player->mo->tracer)
|
||||
player->homing = 3*TICRATE;
|
||||
}
|
||||
}
|
||||
|
||||
player->pflags &= ~(PF_SPINNING|PF_STARTDASH);
|
||||
player->pflags |= PF_THOKKED;
|
||||
}
|
||||
break;
|
||||
|
||||
case CA_FLY:
|
||||
case CA_SWIM: // Swim
|
||||
// If currently in the air from a jump, and you pressed the
|
||||
// button again and have the ability to fly, do so!
|
||||
if (player->charability == CA_SWIM && !(player->mo->eflags & MFE_UNDERWATER))
|
||||
; // Can't do anything if you're a fish out of water!
|
||||
else if (!(player->pflags & PF_THOKKED) && !(player->powers[pw_tailsfly]))
|
||||
{
|
||||
//P_SetPlayerMobjState(player->mo, S_PLAY_ABL1); // Change to the flying animation
|
||||
|
||||
player->powers[pw_tailsfly] = tailsflytics + 1; // Set the fly timer
|
||||
|
||||
player->pflags &= ~(PF_JUMPED|PF_SPINNING|PF_STARTDASH);
|
||||
player->pflags |= PF_THOKKED;
|
||||
}
|
||||
break;
|
||||
case CA_GLIDEANDCLIMB:
|
||||
// Now Knuckles-type abilities are checked.
|
||||
// If you can turn super and aren't already,
|
||||
// and you don't have a shield, do it!
|
||||
if (!(player->pflags & PF_THOKKED) || player->charability2 == CA2_MULTIABILITY)
|
||||
{
|
||||
INT32 glidespeed = player->actionspd;
|
||||
|
||||
player->pflags |= PF_GLIDING|PF_THOKKED;
|
||||
player->glidetime = 0;
|
||||
|
||||
if (player->powers[pw_super] && ALL7EMERALDS(player->powers[pw_emeralds]))
|
||||
{
|
||||
// Glide at double speed while super.
|
||||
glidespeed *= 2;
|
||||
player->pflags &= ~PF_THOKKED;
|
||||
}
|
||||
|
||||
//P_SetPlayerMobjState(player->mo, S_PLAY_ABL1);
|
||||
P_InstaThrust(player->mo, player->mo->angle, FixedMul(glidespeed, player->mo->scale));
|
||||
player->pflags &= ~(PF_SPINNING|PF_STARTDASH);
|
||||
}
|
||||
break;
|
||||
case CA_DOUBLEJUMP: // Double-Jump
|
||||
if (!(player->pflags & PF_THOKKED))
|
||||
{
|
||||
player->pflags &= ~PF_JUMPED;
|
||||
P_DoJump(player, true);
|
||||
|
||||
// Allow infinite double jumping if super.
|
||||
if (!player->powers[pw_super])
|
||||
player->pflags |= PF_THOKKED;
|
||||
}
|
||||
break;
|
||||
case CA_FLOAT: // Float
|
||||
case CA_SLOWFALL: // Slow descent hover
|
||||
if (!player->secondjump)
|
||||
player->secondjump = 1;
|
||||
break;
|
||||
case CA_TELEKINESIS:
|
||||
if (!(player->pflags & PF_THOKKED) || player->charability2 == CA2_MULTIABILITY)
|
||||
{
|
||||
P_Telekinesis(player,
|
||||
FixedMul(player->actionspd, player->mo->scale), // +ve thrust (pushing away from player)
|
||||
FixedMul(384*FRACUNIT, player->mo->scale));
|
||||
}
|
||||
break;
|
||||
case CA_FALLSWITCH:
|
||||
if (!(player->pflags & PF_THOKKED) || player->charability2 == CA2_MULTIABILITY)
|
||||
{
|
||||
player->mo->momz = -player->mo->momz;
|
||||
P_SpawnThokMobj(player);
|
||||
player->pflags |= PF_THOKKED;
|
||||
}
|
||||
break;
|
||||
|
||||
case CA_AIRDRILL:
|
||||
if (!(player->pflags & PF_THOKKED) || player->charability2 == CA2_MULTIABILITY)
|
||||
{
|
||||
player->flyangle = 56 + (60-(player->actionspd>>FRACBITS))/3;
|
||||
player->pflags |= PF_THOKKED;
|
||||
S_StartSound(player->mo, sfx_spndsh);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (player->pflags & PF_THOKKED)
|
||||
{
|
||||
#ifdef HAVE_BLUA
|
||||
if (!LUAh_AbilitySpecial(player))
|
||||
#endif
|
||||
switch (player->charability)
|
||||
{
|
||||
case CA_FLY:
|
||||
case CA_SWIM: // Swim
|
||||
if (player->charability == CA_SWIM && !(player->mo->eflags & MFE_UNDERWATER))
|
||||
; // Can't do anything if you're a fish out of water!
|
||||
else if (player->powers[pw_tailsfly]) // If currently flying, give an ascend boost.
|
||||
{
|
||||
if (!player->fly1)
|
||||
player->fly1 = 20;
|
||||
else
|
||||
player->fly1 = 2;
|
||||
|
||||
if (player->charability == CA_SWIM)
|
||||
player->fly1 /= 2;
|
||||
|
||||
// Slow down!
|
||||
if (player->speed > FixedMul(8*FRACUNIT, player->mo->scale) && player->speed > FixedMul(player->normalspeed>>1, player->mo->scale))
|
||||
P_Thrust(player->mo, R_PointToAngle2(0,0,player->mo->momx,player->mo->momy), FixedMul(-4*FRACUNIT, player->mo->scale));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if ((player->powers[pw_shield] & SH_NOSTACK) == SH_JUMP && !player->powers[pw_super])
|
||||
P_DoJumpShield(player);
|
||||
*/
|
||||
}
|
||||
|
||||
if (cmd->buttons & BT_DRIFT)
|
||||
{
|
||||
player->pflags |= PF_JUMPDOWN;
|
||||
|
||||
if ((gametype != GT_CTF || !player->gotflag) && !player->exiting)
|
||||
{
|
||||
if (player->secondjump == 1)
|
||||
{
|
||||
/*if (player->charability == CA_FLOAT)
|
||||
player->mo->momz = 0;
|
||||
else if (player->charability == CA_SLOWFALL)
|
||||
{
|
||||
if (player->powers[pw_super])
|
||||
{
|
||||
if (P_MobjFlip(player->mo)*player->mo->momz < gravity*16)
|
||||
player->mo->momz = P_MobjFlip(player->mo)*gravity*16; //Float upward 4x as fast while super.
|
||||
}
|
||||
else if (P_MobjFlip(player->mo)*player->mo->momz < -gravity*4)
|
||||
player->mo->momz = P_MobjFlip(player->mo)*-gravity*4;
|
||||
}*/
|
||||
player->pflags &= ~PF_SPINNING;
|
||||
}
|
||||
}
|
||||
}
|
||||
else // If not pressing the jump button
|
||||
{
|
||||
player->pflags &= ~PF_JUMPDOWN;
|
||||
|
||||
// Repeat abilities, but not double jump!
|
||||
/*if ((player->charability2 == CA2_MULTIABILITY && player->charability != CA_DOUBLEJUMP)
|
||||
|| (player->powers[pw_super] && ALL7EMERALDS(player->powers[pw_emeralds])))
|
||||
player->secondjump = 0;
|
||||
else if (player->charability == CA_FLOAT && player->secondjump == 1)
|
||||
player->secondjump = 2;*/
|
||||
|
||||
|
||||
// If letting go of the jump button while still on ascent, cut the jump height.
|
||||
if (player->pflags & PF_JUMPED && P_MobjFlip(player->mo)*player->mo->momz > 0 && player->jumping == 1)
|
||||
{
|
||||
player->mo->momz >>= 1;
|
||||
player->jumping = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
boolean P_AnalogMove(player_t *player)
|
||||
{
|
||||
return player->pflags & PF_ANALOGMODE;
|
||||
|
@ -6848,8 +6413,8 @@ static void P_MovePlayer(player_t *player)
|
|||
|
||||
speed = R_PointToDist2(player->rmomx, player->rmomy, 0, 0);
|
||||
|
||||
if (speed > player->normalspeed-5*FRACUNIT)
|
||||
speed = player->normalspeed-5*FRACUNIT;
|
||||
if (speed > K_GetKartSpeed(player, false)-(5<<FRACBITS))
|
||||
speed = K_GetKartSpeed(player, false)-(5<<FRACBITS);
|
||||
|
||||
if (speed >= runnyspeed)
|
||||
player->fovadd = speed-runnyspeed;
|
||||
|
@ -7404,7 +6969,7 @@ void P_HomingAttack(mobj_t *source, mobj_t *enemy) // Home in on your target
|
|||
dist = 1;
|
||||
|
||||
if (source->type == MT_DETON && enemy->player) // For Deton Chase (Unused)
|
||||
ns = FixedDiv(FixedMul(enemy->player->normalspeed, enemy->scale), FixedDiv(20*FRACUNIT,17*FRACUNIT));
|
||||
ns = FixedDiv(FixedMul(K_GetKartSpeed(enemy->player, false), enemy->scale), FixedDiv(20*FRACUNIT,17*FRACUNIT));
|
||||
else if (source->type != MT_PLAYER)
|
||||
{
|
||||
if (source->threshold == 32000)
|
||||
|
@ -7413,7 +6978,7 @@ void P_HomingAttack(mobj_t *source, mobj_t *enemy) // Home in on your target
|
|||
ns = FixedMul(source->info->speed, source->scale);
|
||||
}
|
||||
else if (source->player)
|
||||
ns = FixedDiv(FixedMul(source->player->actionspd, source->scale), 3*FRACUNIT/2);
|
||||
ns = FixedDiv(FixedMul(K_GetKartSpeed(source->player, false), source->scale), 3*FRACUNIT/2);
|
||||
|
||||
source->momx = FixedMul(FixedDiv(enemy->x - source->x, dist), ns);
|
||||
source->momy = FixedMul(FixedDiv(enemy->y - source->y, dist), ns);
|
||||
|
|
Loading…
Reference in a new issue