diff --git a/src/k_follower.c b/src/k_follower.c index 8bdea0d72..55f68fba3 100644 --- a/src/k_follower.c +++ b/src/k_follower.c @@ -338,6 +338,8 @@ void K_HandleFollower(player_t *player) angle_t destAngle; INT32 angleDiff; + boolean fallbackfollower; + if (player->followerready == false) { // we aren't ready to perform anything follower related yet. @@ -351,9 +353,14 @@ void K_HandleFollower(player_t *player) player->followerskin = -1; } + if (player->pflags & PF_AUTORING && player->followerskin == -1) + fallbackfollower = true; + else + fallbackfollower = false; + // don't do anything if we can't have a follower to begin with. // (It gets removed under those conditions) - if (player->spectator || player->followerskin < 0 + if (player->spectator || player->followerskin < 0 && !fallbackfollower || player->mo == NULL || P_MobjWasRemoved(player->mo)) { if (player->follower) @@ -364,7 +371,10 @@ void K_HandleFollower(player_t *player) } // Before we do anything, let's be sure of where we're supposed to be - fl = &followers[player->followerskin]; + if (fallbackfollower) + fl = &followers[K_FollowerAvailable("Goddess")]; + else + fl = &followers[player->followerskin]; an = player->mo->angle + fl->atangle; zoffs = fl->zoffs; @@ -417,7 +427,10 @@ void K_HandleFollower(player_t *player) } // Set follower colour - color = K_GetEffectiveFollowerColor(player->followercolor, fl, player->skincolor, &skins[player->skin]); + if (fallbackfollower) + color = fl->defaultcolor; + else + color = K_GetEffectiveFollowerColor(player->followercolor, fl, player->skincolor, &skins[player->skin]); if (player->follower == NULL || P_MobjWasRemoved(player->follower)) // follower doesn't exist / isn't valid { diff --git a/src/k_kart.c b/src/k_kart.c index b701aec2e..595498822 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -12663,9 +12663,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground) if (player->autoring && player->follower != NULL - && P_MobjWasRemoved(player->follower) == false - && player->followerskin >= 0 - && player->followerskin < numfollowers) + && P_MobjWasRemoved(player->follower) == false) { const follower_t *fl = &followers[player->followerskin];