mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-21 15:32:34 +00:00
autoring: replace followerskin Goddess cases with K_GetEffectiveFollowerSkin function
This commit is contained in:
parent
78411a25ee
commit
11fce987c0
3 changed files with 48 additions and 32 deletions
|
|
@ -338,7 +338,7 @@ void K_HandleFollower(player_t *player)
|
|||
angle_t destAngle;
|
||||
INT32 angleDiff;
|
||||
|
||||
boolean fallbackfollower;
|
||||
INT32 followerskin;
|
||||
|
||||
if (player->followerready == false)
|
||||
{
|
||||
|
|
@ -353,14 +353,11 @@ void K_HandleFollower(player_t *player)
|
|||
player->followerskin = -1;
|
||||
}
|
||||
|
||||
if (player->pflags & PF_AUTORING && player->followerskin == -1)
|
||||
fallbackfollower = true;
|
||||
else
|
||||
fallbackfollower = false;
|
||||
followerskin = K_GetEffectiveFollowerSkin(player);
|
||||
|
||||
// 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 && !fallbackfollower)
|
||||
if (player->spectator || followerskin < 0
|
||||
|| player->mo == NULL || P_MobjWasRemoved(player->mo))
|
||||
{
|
||||
if (player->follower)
|
||||
|
|
@ -371,10 +368,7 @@ void K_HandleFollower(player_t *player)
|
|||
}
|
||||
|
||||
// Before we do anything, let's be sure of where we're supposed to be
|
||||
if (fallbackfollower)
|
||||
fl = &followers[K_FollowerAvailable("Goddess")];
|
||||
else
|
||||
fl = &followers[player->followerskin];
|
||||
fl = &followers[followerskin];
|
||||
|
||||
an = player->mo->angle + fl->atangle;
|
||||
zoffs = fl->zoffs;
|
||||
|
|
@ -427,7 +421,7 @@ void K_HandleFollower(player_t *player)
|
|||
}
|
||||
|
||||
// Set follower colour
|
||||
if (fallbackfollower)
|
||||
if (player->followerskin < 0) // using a fallback follower
|
||||
color = fl->defaultcolor;
|
||||
else
|
||||
color = K_GetEffectiveFollowerColor(player->followercolor, fl, player->skincolor, &skins[player->skin]);
|
||||
|
|
@ -762,22 +756,21 @@ void K_HandleFollower(player_t *player)
|
|||
--------------------------------------------------*/
|
||||
void K_FollowerHornTaunt(player_t *taunter, player_t *victim, boolean mysticmelodyspecial)
|
||||
{
|
||||
// special case for checking for fallback follower for autoring
|
||||
const INT32 followerskin = K_GetEffectiveFollowerSkin(taunter);
|
||||
|
||||
// Basic checks
|
||||
if (
|
||||
taunter == NULL
|
||||
|| victim == NULL
|
||||
|| taunter->followerskin < -1
|
||||
|| taunter->followerskin >= numfollowers
|
||||
|| followerskin < 0
|
||||
|| followerskin >= numfollowers
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
follower_t *fl;
|
||||
if (taunter->followerskin == -1) /// mmm spaghetti
|
||||
fl = &followers[K_FollowerAvailable("Goddess")]; // special case for checking for fallback follower for autoring
|
||||
else
|
||||
fl = &followers[taunter->followerskin];
|
||||
const follower_t *fl = &followers[followerskin];
|
||||
|
||||
// Restrict mystic melody special status
|
||||
if (mysticmelodyspecial == true)
|
||||
|
|
@ -902,3 +895,16 @@ void K_FollowerHornTaunt(player_t *taunter, player_t *victim, boolean mysticmelo
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*--------------------------------------------------
|
||||
INT32 K_GetEffectiveFollowerSkin(const player_t *player);
|
||||
|
||||
See header file for description.
|
||||
--------------------------------------------------*/
|
||||
INT32 K_GetEffectiveFollowerSkin(const player_t *player)
|
||||
{
|
||||
if ((player->pflags & PF_AUTORING) && player->followerskin == -1)
|
||||
return K_FollowerAvailable("Goddess");
|
||||
else
|
||||
return player->followerskin;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -246,6 +246,21 @@ void K_RemoveFollower(player_t *player);
|
|||
|
||||
void K_FollowerHornTaunt(player_t *taunter, player_t *victim, boolean mysticmelodyspecial);
|
||||
|
||||
/*--------------------------------------------------
|
||||
INT32 K_GetEffectiveFollowerSkin(const player_t *player)
|
||||
|
||||
Returns the player's follower, set by profile or as
|
||||
a fallback.
|
||||
|
||||
Input Arguments:-
|
||||
player - The player.
|
||||
|
||||
Return:-
|
||||
The resultant skin id for the follower, or -1 for None
|
||||
--------------------------------------------------*/
|
||||
|
||||
INT32 K_GetEffectiveFollowerSkin(const player_t *player);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
|
|
|||
23
src/k_kart.c
23
src/k_kart.c
|
|
@ -2865,16 +2865,12 @@ void K_TryHurtSoundExchange(mobj_t *victim, mobj_t *attacker)
|
|||
attacker->player->confirmVictim = (victim->player - players);
|
||||
attacker->player->confirmVictimDelay = TICRATE/2;
|
||||
|
||||
const INT32 followerskin = K_GetEffectiveFollowerSkin(attacker->player);
|
||||
if (attacker->player->follower != NULL
|
||||
&& attacker->player->followerskin >= -1
|
||||
&& attacker->player->followerskin < numfollowers)
|
||||
&& followerskin >= 0
|
||||
&& followerskin < numfollowers)
|
||||
{
|
||||
follower_t *fl;
|
||||
if (attacker->player->followerskin == -1) /// mmm spaghetti
|
||||
fl = &followers[K_FollowerAvailable("Goddess")]; // special case for checking for fallback follower for autoring
|
||||
else
|
||||
fl = &followers[attacker->player->followerskin];
|
||||
|
||||
const follower_t *fl = &followers[followerskin];
|
||||
attacker->player->follower->movecount = fl->hitconfirmtime; // movecount is used to play the hitconfirm animation for followers.
|
||||
}
|
||||
}
|
||||
|
|
@ -12665,15 +12661,14 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
|
|||
ring->shadowscale = 0;
|
||||
P_SetTarget(&ring->target, player->mo); // user
|
||||
|
||||
const INT32 followerskin = K_GetEffectiveFollowerSkin(player);
|
||||
if (player->autoring
|
||||
&& player->follower != NULL
|
||||
&& P_MobjWasRemoved(player->follower) == false)
|
||||
&& P_MobjWasRemoved(player->follower) == false
|
||||
&& followerskin >= 0
|
||||
&& followerskin < numfollowers)
|
||||
{
|
||||
const follower_t *fl = &followers[
|
||||
player->followerskin == -1
|
||||
? K_FollowerAvailable("Goddess")
|
||||
: player->followerskin
|
||||
];
|
||||
const follower_t *fl = &followers[followerskin];
|
||||
|
||||
ring->cusval = player->follower->x - player->mo->x;
|
||||
ring->cvmem = player->follower->y - player->mo->y;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue