mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-22 16:02:29 +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;
|
angle_t destAngle;
|
||||||
INT32 angleDiff;
|
INT32 angleDiff;
|
||||||
|
|
||||||
boolean fallbackfollower;
|
INT32 followerskin;
|
||||||
|
|
||||||
if (player->followerready == false)
|
if (player->followerready == false)
|
||||||
{
|
{
|
||||||
|
|
@ -353,14 +353,11 @@ void K_HandleFollower(player_t *player)
|
||||||
player->followerskin = -1;
|
player->followerskin = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->pflags & PF_AUTORING && player->followerskin == -1)
|
followerskin = K_GetEffectiveFollowerSkin(player);
|
||||||
fallbackfollower = true;
|
|
||||||
else
|
|
||||||
fallbackfollower = false;
|
|
||||||
|
|
||||||
// don't do anything if we can't have a follower to begin with.
|
// don't do anything if we can't have a follower to begin with.
|
||||||
// (It gets removed under those conditions)
|
// (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))
|
|| player->mo == NULL || P_MobjWasRemoved(player->mo))
|
||||||
{
|
{
|
||||||
if (player->follower)
|
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
|
// Before we do anything, let's be sure of where we're supposed to be
|
||||||
if (fallbackfollower)
|
fl = &followers[followerskin];
|
||||||
fl = &followers[K_FollowerAvailable("Goddess")];
|
|
||||||
else
|
|
||||||
fl = &followers[player->followerskin];
|
|
||||||
|
|
||||||
an = player->mo->angle + fl->atangle;
|
an = player->mo->angle + fl->atangle;
|
||||||
zoffs = fl->zoffs;
|
zoffs = fl->zoffs;
|
||||||
|
|
@ -427,7 +421,7 @@ void K_HandleFollower(player_t *player)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set follower colour
|
// Set follower colour
|
||||||
if (fallbackfollower)
|
if (player->followerskin < 0) // using a fallback follower
|
||||||
color = fl->defaultcolor;
|
color = fl->defaultcolor;
|
||||||
else
|
else
|
||||||
color = K_GetEffectiveFollowerColor(player->followercolor, fl, player->skincolor, &skins[player->skin]);
|
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)
|
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
|
// Basic checks
|
||||||
if (
|
if (
|
||||||
taunter == NULL
|
taunter == NULL
|
||||||
|| victim == NULL
|
|| victim == NULL
|
||||||
|| taunter->followerskin < -1
|
|| followerskin < 0
|
||||||
|| taunter->followerskin >= numfollowers
|
|| followerskin >= numfollowers
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
follower_t *fl;
|
const follower_t *fl = &followers[followerskin];
|
||||||
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];
|
|
||||||
|
|
||||||
// Restrict mystic melody special status
|
// Restrict mystic melody special status
|
||||||
if (mysticmelodyspecial == true)
|
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);
|
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
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
#endif
|
#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->confirmVictim = (victim->player - players);
|
||||||
attacker->player->confirmVictimDelay = TICRATE/2;
|
attacker->player->confirmVictimDelay = TICRATE/2;
|
||||||
|
|
||||||
|
const INT32 followerskin = K_GetEffectiveFollowerSkin(attacker->player);
|
||||||
if (attacker->player->follower != NULL
|
if (attacker->player->follower != NULL
|
||||||
&& attacker->player->followerskin >= -1
|
&& followerskin >= 0
|
||||||
&& attacker->player->followerskin < numfollowers)
|
&& followerskin < numfollowers)
|
||||||
{
|
{
|
||||||
follower_t *fl;
|
const follower_t *fl = &followers[followerskin];
|
||||||
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];
|
|
||||||
|
|
||||||
attacker->player->follower->movecount = fl->hitconfirmtime; // movecount is used to play the hitconfirm animation for followers.
|
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;
|
ring->shadowscale = 0;
|
||||||
P_SetTarget(&ring->target, player->mo); // user
|
P_SetTarget(&ring->target, player->mo); // user
|
||||||
|
|
||||||
|
const INT32 followerskin = K_GetEffectiveFollowerSkin(player);
|
||||||
if (player->autoring
|
if (player->autoring
|
||||||
&& player->follower != NULL
|
&& player->follower != NULL
|
||||||
&& P_MobjWasRemoved(player->follower) == false)
|
&& P_MobjWasRemoved(player->follower) == false
|
||||||
|
&& followerskin >= 0
|
||||||
|
&& followerskin < numfollowers)
|
||||||
{
|
{
|
||||||
const follower_t *fl = &followers[
|
const follower_t *fl = &followers[followerskin];
|
||||||
player->followerskin == -1
|
|
||||||
? K_FollowerAvailable("Goddess")
|
|
||||||
: player->followerskin
|
|
||||||
];
|
|
||||||
|
|
||||||
ring->cusval = player->follower->x - player->mo->x;
|
ring->cusval = player->follower->x - player->mo->x;
|
||||||
ring->cvmem = player->follower->y - player->mo->y;
|
ring->cvmem = player->follower->y - player->mo->y;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue