mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Not Climable flag on a bot controller disables rubberbanding
This commit is contained in:
parent
8d5cec5ebf
commit
bfdae28409
1 changed files with 78 additions and 64 deletions
142
src/k_bot.c
142
src/k_bot.c
|
|
@ -283,6 +283,70 @@ boolean K_BotCanTakeCut(player_t *player)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*--------------------------------------------------
|
||||||
|
static INT16 K_FindBotController(mobj_t *mo)
|
||||||
|
|
||||||
|
Finds if any bot controller linedefs are tagged to the bot's sector.
|
||||||
|
|
||||||
|
Input Arguments:-
|
||||||
|
mo - The bot player's mobj.
|
||||||
|
|
||||||
|
Return:-
|
||||||
|
Line number of the bot controller. -1 if it doesn't exist.
|
||||||
|
--------------------------------------------------*/
|
||||||
|
static INT16 K_FindBotController(mobj_t *mo)
|
||||||
|
{
|
||||||
|
msecnode_t *node;
|
||||||
|
ffloor_t *rover;
|
||||||
|
INT16 lineNum = -1;
|
||||||
|
mtag_t tag;
|
||||||
|
|
||||||
|
I_Assert(mo != NULL);
|
||||||
|
I_Assert(!P_MobjWasRemoved(mo));
|
||||||
|
|
||||||
|
for (node = mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
||||||
|
{
|
||||||
|
if (!node->m_sector)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
tag = Tag_FGet(&node->m_sector->tags);
|
||||||
|
lineNum = P_FindSpecialLineFromTag(2004, tag, -1); // todo: needs to not use P_FindSpecialLineFromTag
|
||||||
|
|
||||||
|
if (lineNum != -1)
|
||||||
|
{
|
||||||
|
return lineNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (rover = node->m_sector->ffloors; rover; rover = rover->next)
|
||||||
|
{
|
||||||
|
sector_t *rs = NULL;
|
||||||
|
|
||||||
|
if (!(rover->flags & FF_EXISTS))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mo->z > *rover->topheight || mo->z + mo->height < *rover->bottomheight)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
rs = §ors[rover->secnum];
|
||||||
|
tag = Tag_FGet(&rs->tags);
|
||||||
|
lineNum = P_FindSpecialLineFromTag(2004, tag, -1);
|
||||||
|
|
||||||
|
if (lineNum != -1)
|
||||||
|
{
|
||||||
|
return lineNum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------
|
/*--------------------------------------------------
|
||||||
static UINT32 K_BotRubberbandDistance(player_t *player)
|
static UINT32 K_BotRubberbandDistance(player_t *player)
|
||||||
|
|
||||||
|
|
@ -346,6 +410,7 @@ fixed_t K_BotRubberband(player_t *player)
|
||||||
fixed_t rubberband = FRACUNIT;
|
fixed_t rubberband = FRACUNIT;
|
||||||
fixed_t max, min;
|
fixed_t max, min;
|
||||||
player_t *firstplace = NULL;
|
player_t *firstplace = NULL;
|
||||||
|
INT16 botController = -1;
|
||||||
UINT8 i;
|
UINT8 i;
|
||||||
|
|
||||||
if (player->exiting)
|
if (player->exiting)
|
||||||
|
|
@ -354,6 +419,19 @@ fixed_t K_BotRubberband(player_t *player)
|
||||||
return FRACUNIT;
|
return FRACUNIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
botController = K_FindBotController(player->mo);
|
||||||
|
|
||||||
|
if (botController != -1)
|
||||||
|
{
|
||||||
|
line_t *controllerLine = &lines[botController];
|
||||||
|
|
||||||
|
// No Climb Flag: Disable rubberbanding
|
||||||
|
if (controllerLine->flags & ML_NOCLIMB)
|
||||||
|
{
|
||||||
|
return FRACUNIT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < MAXPLAYERS; i++)
|
for (i = 0; i < MAXPLAYERS; i++)
|
||||||
{
|
{
|
||||||
if (!playeringame[i] || players[i].spectator)
|
if (!playeringame[i] || players[i].spectator)
|
||||||
|
|
@ -812,70 +890,6 @@ static UINT8 K_TrySpindash(player_t *player)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------
|
|
||||||
static INT16 K_FindBotController(mobj_t *mo)
|
|
||||||
|
|
||||||
Finds if any bot controller linedefs are tagged to the bot's sector.
|
|
||||||
|
|
||||||
Input Arguments:-
|
|
||||||
mo - The bot player's mobj.
|
|
||||||
|
|
||||||
Return:-
|
|
||||||
Line number of the bot controller. -1 if it doesn't exist.
|
|
||||||
--------------------------------------------------*/
|
|
||||||
static INT16 K_FindBotController(mobj_t *mo)
|
|
||||||
{
|
|
||||||
msecnode_t *node;
|
|
||||||
ffloor_t *rover;
|
|
||||||
INT16 lineNum = -1;
|
|
||||||
mtag_t tag;
|
|
||||||
|
|
||||||
I_Assert(mo != NULL);
|
|
||||||
I_Assert(!P_MobjWasRemoved(mo));
|
|
||||||
|
|
||||||
for (node = mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
|
||||||
{
|
|
||||||
if (!node->m_sector)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
tag = Tag_FGet(&node->m_sector->tags);
|
|
||||||
lineNum = P_FindSpecialLineFromTag(2004, tag, -1); // todo: needs to not use P_FindSpecialLineFromTag
|
|
||||||
|
|
||||||
if (lineNum != -1)
|
|
||||||
{
|
|
||||||
return lineNum;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (rover = node->m_sector->ffloors; rover; rover = rover->next)
|
|
||||||
{
|
|
||||||
sector_t *rs = NULL;
|
|
||||||
|
|
||||||
if (!(rover->flags & FF_EXISTS))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mo->z > *rover->topheight || mo->z + mo->height < *rover->bottomheight)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
rs = §ors[rover->secnum];
|
|
||||||
tag = Tag_FGet(&rs->tags);
|
|
||||||
lineNum = P_FindSpecialLineFromTag(2004, tag, -1);
|
|
||||||
|
|
||||||
if (lineNum != -1)
|
|
||||||
{
|
|
||||||
return lineNum;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------
|
/*--------------------------------------------------
|
||||||
static void K_DrawPredictionDebug(botprediction_t *predict, player_t *player)
|
static void K_DrawPredictionDebug(botprediction_t *predict, player_t *player)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue