mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-26 20:31:30 +00:00
Fixing RocketSneakers
New function specifically for dropping rocketsneakers K_DropRocketSneaker Used by Eggbox touchspecial to properly dispose of shoes and clean up hnext Now also used by the shoe thinker to drop themselves Fixes angle of spent shoe launch
This commit is contained in:
parent
f856f18233
commit
0637ed89aa
4 changed files with 41 additions and 12 deletions
36
src/k_kart.c
36
src/k_kart.c
|
@ -3870,6 +3870,42 @@ void K_DropItems(player_t *player)
|
|||
K_StripItems(player);
|
||||
}
|
||||
|
||||
void K_DropRocketSneaker(player_t *player)
|
||||
{
|
||||
mobj_t *shoe = player->mo;
|
||||
fixed_t flingangle;
|
||||
boolean leftshoe = true; //left shoie is first
|
||||
while ((shoe = shoe->hnext) && !P_MobjWasRemoved(shoe))
|
||||
{
|
||||
shoe->flags2 &= ~MF2_DONTDRAW;
|
||||
shoe->flags &= ~MF_NOGRAVITY;
|
||||
shoe->angle += ANGLE_45;
|
||||
|
||||
if (shoe->eflags & MFE_VERTICALFLIP)
|
||||
shoe->z -= shoe->height;
|
||||
else
|
||||
shoe->z += shoe->height;
|
||||
|
||||
//left shoe goes off tot eh left, right shoe off to the right
|
||||
if (leftshoe)
|
||||
flingangle = -(ANG60);
|
||||
else
|
||||
flingangle = ANG60;
|
||||
|
||||
S_StartSound(shoe, shoe->info->deathsound);
|
||||
P_SetObjectMomZ(shoe, 8*FRACUNIT, false);
|
||||
P_InstaThrust(shoe, R_PointToAngle2(shoe->target->x, shoe->target->y, shoe->x, shoe->y)+flingangle, 16*FRACUNIT);
|
||||
shoe->momx += shoe->target->momx;
|
||||
shoe->momy += shoe->target->momy;
|
||||
shoe->momz += shoe->target->momz;
|
||||
shoe->extravalue2 = 1;
|
||||
|
||||
leftshoe = false;
|
||||
}
|
||||
P_SetTarget(&player->mo->hnext, NULL);
|
||||
player->kartstuff[k_rocketsneakertimer] = 0;
|
||||
}
|
||||
|
||||
// When an item in the hnext chain dies.
|
||||
void K_RepairOrbitChain(mobj_t *orbit)
|
||||
{
|
||||
|
|
|
@ -55,6 +55,7 @@ INT16 K_GetKartTurnValue(player_t *player, INT16 turnvalue);
|
|||
INT32 K_GetKartDriftSparkValue(player_t *player);
|
||||
void K_KartUpdatePosition(player_t *player);
|
||||
void K_DropItems(player_t *player);
|
||||
void K_DropRocketSneaker(player_t *player);
|
||||
void K_StripItems(player_t *player);
|
||||
void K_StripOther(player_t *player);
|
||||
void K_MomentumToFacing(player_t *player);
|
||||
|
|
|
@ -408,6 +408,9 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (player->kartstuff[k_rocketsneakertimer])
|
||||
K_DropRocketSneaker(player);
|
||||
|
||||
K_DropItems(player); //K_StripItems(player);
|
||||
//K_StripOther(player);
|
||||
player->kartstuff[k_itemroulette] = 1;
|
||||
|
|
13
src/p_mobj.c
13
src/p_mobj.c
|
@ -8312,18 +8312,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
|
||||
if (!mobj->extravalue2)
|
||||
{
|
||||
if (mobj->eflags & MFE_VERTICALFLIP)
|
||||
mobj->z -= mobj->height;
|
||||
else
|
||||
mobj->z += mobj->height;
|
||||
|
||||
S_StartSound(mobj, mobj->info->deathsound);
|
||||
P_SetObjectMomZ(mobj, 8*FRACUNIT, false);
|
||||
P_InstaThrust(mobj, R_PointToAngle2(mobj->target->x, mobj->target->y, mobj->x, mobj->y)+ANGLE_90, 16*FRACUNIT);
|
||||
mobj->momx += mobj->target->momx;
|
||||
mobj->momy += mobj->target->momy;
|
||||
mobj->momz += mobj->target->momz;
|
||||
mobj->extravalue2 = 1;
|
||||
K_DropRocketSneaker(mobj->target->player);
|
||||
}
|
||||
else if (P_IsObjectOnGround(mobj))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue