mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'fix-bungee-softlock' into 'master'
Add Obj_EndBungee, end bungee state when P_ResetPlayer and when player is damaged in any way Closes #760 See merge request KartKrew/Kart!1641
This commit is contained in:
commit
c24f10a7e7
4 changed files with 28 additions and 7 deletions
|
|
@ -249,6 +249,7 @@ void Obj_getPlayerOffRideroid(mobj_t *mo); // used in p_map.c to get off of em w
|
||||||
/* LSZ Bungee */
|
/* LSZ Bungee */
|
||||||
void Obj_BungeeSpecial(mobj_t *mo, player_t *p); // used when the player touches the bungee, to be used in p_inter.c
|
void Obj_BungeeSpecial(mobj_t *mo, player_t *p); // used when the player touches the bungee, to be used in p_inter.c
|
||||||
void Obj_playerBungeeThink(player_t *p); // player interaction with the bungee. The bungee is to be stored in p->mo->tracer.
|
void Obj_playerBungeeThink(player_t *p); // player interaction with the bungee. The bungee is to be stored in p->mo->tracer.
|
||||||
|
void Obj_EndBungee(player_t *p);
|
||||||
|
|
||||||
/* LSZ Balls */
|
/* LSZ Balls */
|
||||||
void Obj_EggBallSpawnerThink(mobj_t *mo);
|
void Obj_EggBallSpawnerThink(mobj_t *mo);
|
||||||
|
|
|
||||||
|
|
@ -85,19 +85,13 @@ void Obj_playerBungeeThink(player_t *p)
|
||||||
if ((p->mo->eflags & MFE_VERTICALFLIP && p->mo->z < bungee->z)
|
if ((p->mo->eflags & MFE_VERTICALFLIP && p->mo->z < bungee->z)
|
||||||
|| (!(p->mo->eflags & MFE_VERTICALFLIP) && p->mo->z > bungee->z ))
|
|| (!(p->mo->eflags & MFE_VERTICALFLIP) && p->mo->z > bungee->z ))
|
||||||
{
|
{
|
||||||
|
|
||||||
p->mo->flags &= ~MF_NOGRAVITY;
|
|
||||||
p->mo->flags &= ~MF_NOCLIPTHING;
|
|
||||||
p->pflags &= ~PF_NOFASTFALL;
|
|
||||||
p->bungee = BUNGEE_NONE;
|
|
||||||
P_InstaThrust(p->mo, bungee->angle, p->mo->momz/8);
|
P_InstaThrust(p->mo, bungee->angle, p->mo->momz/8);
|
||||||
p->mo->momz = (p->mo->momz*3)/4;
|
p->mo->momz = (p->mo->momz*3)/4;
|
||||||
|
|
||||||
p->springstars = TICRATE; // these are used as a buffer not to latch to vines again.
|
p->springstars = TICRATE; // these are used as a buffer not to latch to vines again.
|
||||||
p->springcolor = SKINCOLOR_EMERALD;
|
p->springcolor = SKINCOLOR_EMERALD;
|
||||||
|
|
||||||
P_RemoveMobj(bungee);
|
Obj_EndBungee(p);
|
||||||
P_SetTarget(&p->mo->tracer, NULL);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -117,3 +111,26 @@ void Obj_playerBungeeThink(player_t *p)
|
||||||
seg->fuse = 2;
|
seg->fuse = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Obj_EndBungee(player_t *p)
|
||||||
|
{
|
||||||
|
if (p->bungee == BUNGEE_NONE)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
p->pflags &= ~PF_NOFASTFALL;
|
||||||
|
p->bungee = BUNGEE_NONE;
|
||||||
|
|
||||||
|
if (!P_MobjWasRemoved(p->mo))
|
||||||
|
{
|
||||||
|
p->mo->flags &= ~MF_NOGRAVITY;
|
||||||
|
p->mo->flags &= ~MF_NOCLIPTHING;
|
||||||
|
|
||||||
|
if (!P_MobjWasRemoved(p->mo->tracer))
|
||||||
|
{
|
||||||
|
P_RemoveMobj(p->mo->tracer);
|
||||||
|
}
|
||||||
|
P_SetTarget(&p->mo->tracer, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -3130,6 +3130,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
||||||
player->glanceDir = 0;
|
player->glanceDir = 0;
|
||||||
player->preventfailsafe = TICRATE*3;
|
player->preventfailsafe = TICRATE*3;
|
||||||
player->pflags &= ~PF_GAINAX;
|
player->pflags &= ~PF_GAINAX;
|
||||||
|
Obj_EndBungee(player);
|
||||||
|
|
||||||
if (player->spectator == false && !(player->charflags & SF_IRONMAN))
|
if (player->spectator == false && !(player->charflags & SF_IRONMAN))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@
|
||||||
#include "k_profiles.h"
|
#include "k_profiles.h"
|
||||||
#include "music.h"
|
#include "music.h"
|
||||||
#include "k_tally.h"
|
#include "k_tally.h"
|
||||||
|
#include "k_objects.h"
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
#include "hardware/hw_light.h"
|
#include "hardware/hw_light.h"
|
||||||
|
|
@ -481,6 +482,7 @@ void P_ResetPlayer(player_t *player)
|
||||||
player->trickpanel = TRICKSTATE_NONE;
|
player->trickpanel = TRICKSTATE_NONE;
|
||||||
player->glanceDir = 0;
|
player->glanceDir = 0;
|
||||||
player->fastfall = 0;
|
player->fastfall = 0;
|
||||||
|
Obj_EndBungee(player);
|
||||||
|
|
||||||
if (player->mo != NULL && P_MobjWasRemoved(player->mo) == false)
|
if (player->mo != NULL && P_MobjWasRemoved(player->mo) == false)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue