mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-02-03 20:26:05 +00:00
Merge branch 'trapbubble-softlock' into 'master'
Fix trap Bubble respawn softlock See merge request KartKrew/RingRacers!101
This commit is contained in:
commit
aadddc291c
6 changed files with 17 additions and 3 deletions
|
|
@ -150,6 +150,7 @@ typedef enum
|
|||
CR_SLIDING,
|
||||
CR_ZOOMTUBE,
|
||||
CR_DASHRING,
|
||||
CR_TRAPBUBBLE,
|
||||
} carrytype_t; // carry
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -4670,7 +4670,10 @@ struct int_const_s const INT_CONST[] = {
|
|||
|
||||
// Carrying
|
||||
{"CR_NONE",CR_NONE},
|
||||
{"CR_SLIDING",CR_SLIDING},
|
||||
{"CR_ZOOMTUBE",CR_ZOOMTUBE},
|
||||
{"CR_DASHRING",CR_DASHRING},
|
||||
{"CR_TRAPBUBBLE",CR_TRAPBUBBLE},
|
||||
|
||||
// Character flags (skinflags_t)
|
||||
{"SF_MACHINE",SF_MACHINE},
|
||||
|
|
|
|||
|
|
@ -724,7 +724,7 @@ static void K_DropDashWait(player_t *player)
|
|||
player->respawn.timer--;
|
||||
|
||||
if (player->pflags & PF_FAULT)
|
||||
return;
|
||||
return;
|
||||
|
||||
if (leveltime % 8 == 0)
|
||||
{
|
||||
|
|
@ -871,6 +871,12 @@ static void K_HandleDropDash(player_t *player)
|
|||
{
|
||||
player->mo->colorized = false;
|
||||
}
|
||||
// if player got trapped inside a bubble but lost its bubble object in a unintended way, remove no gravity flag
|
||||
if (((P_MobjWasRemoved(player->mo->tracer) || player->mo->tracer == NULL || (!P_MobjWasRemoved(player->mo->tracer) && player->mo->tracer && player->mo->tracer->type != MT_BUBBLESHIELDTRAP)) && player->carry == CR_TRAPBUBBLE) && (player->mo->flags & MF_NOGRAVITY))
|
||||
{
|
||||
player->mo->flags &= ~MF_NOGRAVITY;
|
||||
player->carry = CR_NONE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -642,6 +642,8 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
|
|||
P_SetTarget(&special->tracer, toucher);
|
||||
toucher->flags |= MF_NOGRAVITY;
|
||||
toucher->momz = (8*toucher->scale) * P_MobjFlip(toucher);
|
||||
toucher->player->carry = CR_TRAPBUBBLE;
|
||||
P_SetTarget(&toucher->tracer, special); //use tracer to acces the object
|
||||
|
||||
// Snap to the unfortunate player and quit moving laterally, or we can end up quite far away
|
||||
special->momx = 0;
|
||||
|
|
|
|||
|
|
@ -9339,7 +9339,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
if (leveltime % 180 == 0)
|
||||
S_StartSound(mobj, sfx_s3kbfl);
|
||||
|
||||
if (mobj->tracer && !P_MobjWasRemoved(mobj->tracer) && mobj->tracer->player)
|
||||
if (mobj->tracer && !P_MobjWasRemoved(mobj->tracer) && mobj->tracer->tracer == mobj && mobj->tracer->player && mobj->tracer->player->carry == CR_TRAPBUBBLE)
|
||||
{
|
||||
player_t *player = mobj->tracer->player;
|
||||
fixed_t destx, desty, curfz, destfz;
|
||||
|
|
@ -9387,6 +9387,7 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
|||
{
|
||||
S_StartSound(mobj->tracer, sfx_s3k77);
|
||||
mobj->tracer->flags &= ~MF_NOGRAVITY;
|
||||
mobj->tracer->player->carry = CR_NONE;
|
||||
P_KillMobj(mobj, mobj->tracer, mobj->tracer, DMG_NORMAL);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -418,7 +418,8 @@ void P_ResetPlayer(player_t *player)
|
|||
{
|
||||
//player->pflags &= ~(PF_);
|
||||
|
||||
player->carry = CR_NONE;
|
||||
if (player->carry != CR_TRAPBUBBLE)
|
||||
player->carry = CR_NONE;
|
||||
player->onconveyor = 0;
|
||||
|
||||
//player->drift = player->driftcharge = 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue