mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2025-03-25 04:11:05 +00:00
Merge remote-tracking branch 'refs/remotes/origin/master' into battle
This commit is contained in:
commit
54b8e25713
1 changed files with 54 additions and 7 deletions
61
src/p_mobj.c
61
src/p_mobj.c
|
@ -35,6 +35,8 @@
|
|||
#include "p_slopes.h"
|
||||
#endif
|
||||
|
||||
#include "k_kart.h"
|
||||
|
||||
// protos.
|
||||
static CV_PossibleValue_t viewheight_cons_t[] = {{16, "MIN"}, {56, "MAX"}, {0, NULL}};
|
||||
consvar_t cv_viewheight = {"viewheight", VIEWHEIGHTS, 0, viewheight_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||
|
@ -7528,28 +7530,73 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
}
|
||||
break;
|
||||
case MT_GREENITEM:
|
||||
{
|
||||
fixed_t finalspeed = mobj->info->speed;
|
||||
|
||||
if (cv_kartcc.value == 50)
|
||||
{
|
||||
finalspeed = FixedMul(finalspeed, FRACUNIT-FRACUNIT/4);
|
||||
}
|
||||
else if (cv_kartcc.value == 150)
|
||||
{
|
||||
finalspeed = FixedMul(finalspeed, FRACUNIT+FRACUNIT/4);
|
||||
}
|
||||
|
||||
mobj->angle = R_PointToAngle2(mobj->x, mobj->y, mobj->x+mobj->momx, mobj->y+mobj->momy);
|
||||
P_InstaThrust(mobj, mobj->angle, mobj->info->speed);
|
||||
if (mobj->health <= 5)
|
||||
{
|
||||
INT32 i;
|
||||
for (i = 5; i >= mobj->health; i--)
|
||||
{
|
||||
finalspeed = FixedMul(finalspeed, FRACUNIT-FRACUNIT/4);
|
||||
}
|
||||
P_InstaThrust(mobj, mobj->angle, finalspeed);
|
||||
}
|
||||
else
|
||||
{
|
||||
P_InstaThrust(mobj, mobj->angle, finalspeed);
|
||||
}
|
||||
if (mobj->threshold > 0)
|
||||
mobj->threshold--;
|
||||
if (leveltime % 6 == 0)
|
||||
S_StartSound(mobj, mobj->info->activesound);
|
||||
break;
|
||||
}
|
||||
case MT_REDITEM:
|
||||
{
|
||||
fixed_t magnitude;
|
||||
fixed_t topspeed = 64*FRACUNIT;
|
||||
fixed_t distbarrier = 512*FRACUNIT;
|
||||
fixed_t distaway;
|
||||
if (mobj->threshold > 0)
|
||||
mobj->threshold--;
|
||||
if (leveltime % 7 == 0)
|
||||
S_StartSound(mobj, mobj->info->activesound);
|
||||
|
||||
// Do a similar thing to what is done to the player to keep the red shell at a speed cap
|
||||
magnitude = P_AproxDistance(mobj->momx, mobj->momy);
|
||||
if (magnitude > 64*FRACUNIT)
|
||||
if (cv_kartcc.value == 50)
|
||||
{
|
||||
mobj->momx = FixedMul(FixedDiv(mobj->momx, magnitude), 64*FRACUNIT);
|
||||
mobj->momy = FixedMul(FixedDiv(mobj->momy, magnitude), 64*FRACUNIT);
|
||||
topspeed = FixedMul(topspeed, FRACUNIT-FRACUNIT/4);
|
||||
distbarrier = FixedMul(distbarrier, FRACUNIT-FRACUNIT/4);
|
||||
}
|
||||
else if (cv_kartcc.value == 150)
|
||||
{
|
||||
topspeed = FixedMul(topspeed, FRACUNIT+FRACUNIT/4);
|
||||
distbarrier = FixedMul(distbarrier, FRACUNIT+FRACUNIT/4);
|
||||
}
|
||||
|
||||
if (mobj->tracer)
|
||||
{
|
||||
distaway = P_AproxDistance(mobj->tracer->x - mobj->x, mobj->tracer->y - mobj->y);
|
||||
if (distaway < distbarrier)
|
||||
{
|
||||
if (mobj->tracer->player)
|
||||
{
|
||||
fixed_t speeddifference = abs(topspeed - min(mobj->tracer->player->speed, K_GetKartSpeed(mobj->tracer->player, false)));
|
||||
topspeed = topspeed - FixedMul(speeddifference, FRACUNIT-FixedDiv(distaway, distbarrier));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
P_InstaThrust(mobj, R_PointToAngle2(0, 0, mobj->momx, mobj->momy), topspeed);
|
||||
break;
|
||||
}
|
||||
case MT_REDITEMDUD:
|
||||
|
|
Loading…
Reference in a new issue