Merge branch 'sealed-vanish' into 'master'

Winning player vanishes when crossing finish line in Sealed Stars

See merge request KartKrew/Kart!1677
This commit is contained in:
Oni 2023-12-08 04:36:17 +00:00
commit e77a52e9fa
5 changed files with 15 additions and 0 deletions

View file

@ -419,6 +419,7 @@ void K_HandleFollower(player_t *player)
K_UpdateFollowerState(player->follower, fl->idlestate, FOLLOWERSTATE_IDLE);
P_SetTarget(&player->follower->target, player->mo); // we need that to know when we need to disappear
P_SetTarget(&player->follower->punt_ref, player->mo);
player->follower->angle = player->follower->old_angle = player->mo->angle;
// This is safe to only spawn it here, the follower is removed then respawned when switched.
@ -427,10 +428,12 @@ void K_HandleFollower(player_t *player)
bmobj = P_SpawnMobj(player->follower->x, player->follower->y, player->follower->z, MT_FOLLOWERBUBBLE_FRONT);
P_SetTarget(&player->follower->hnext, bmobj);
P_SetTarget(&bmobj->target, player->follower); // Used to know if we have to despawn at some point.
P_SetTarget(&bmobj->punt_ref, player->mo);
bmobj = P_SpawnMobj(player->follower->x, player->follower->y, player->follower->z, MT_FOLLOWERBUBBLE_BACK);
P_SetTarget(&player->follower->hnext->hnext, bmobj); // this seems absolutely stupid, I know, but this will make updating the momentums/flags of these a bit easier.
P_SetTarget(&bmobj->target, player->follower); // Ditto
P_SetTarget(&bmobj->punt_ref, player->mo);
}
}
else // follower exists, woo!

View file

@ -8082,6 +8082,9 @@ static void K_UpdateTripwire(player_t *player)
P_SetTarget(&front->target, player->mo);
P_SetTarget(&back->target, player->mo);
P_SetTarget(&front->punt_ref, player->mo);
P_SetTarget(&back->punt_ref, player->mo);
front->dispoffset = 1;
front->old_angle = back->old_angle = K_MomentumAngle(player->mo);
back->dispoffset = -1;

View file

@ -276,6 +276,7 @@ static void spawn_lens_flare(mobj_t *emerald)
void Obj_BeginEmeraldOrbit(mobj_t *emerald, mobj_t *target, fixed_t radius, INT32 revolution_time, tic_t fuse)
{
P_SetTarget(&emerald_orbit(emerald), target);
P_SetTarget(&emerald->punt_ref, target);
if (P_MobjWasRemoved(emerald_award(emerald)))
{

View file

@ -5434,6 +5434,9 @@ void P_RunOverlays(void)
mo->scale = mo->destscale = FixedMul(mo->target->scale, mo->movefactor);
mo->angle = (mo->target->player ? mo->target->player->drawangle : mo->target->angle) + mo->movedir;
P_SetTarget(&mo->punt_ref, mo->target->punt_ref);
mo->reappear = mo->target->reappear;
if (!(mo->threshold & OV_DONTSCREENOFFSET))
{
mo->spritexoffset = mo->target->spritexoffset;

View file

@ -1332,6 +1332,11 @@ void P_DoPlayerExit(player_t *player, pflags_t flags)
{
G_BeginLevelExit();
}
if (specialstageinfo.valid == true && losing == false && P_MobjWasRemoved(player->mo) == false)
{
K_MakeObjectReappear(player->mo);
}
}
K_InitPlayerTally(player);