mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-30 14:21:51 +00:00
Fixed a bunch of things MI pointed out.
This commit is contained in:
parent
1bbbe15ee5
commit
a2dabd7041
2 changed files with 43 additions and 9 deletions
|
@ -2201,14 +2201,14 @@ void T_EachTimeThinker(levelspecthink_t *eachtime)
|
||||||
if ((netgame || multiplayer) && players[i].spectator)
|
if ((netgame || multiplayer) && players[i].spectator)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (players[i].mo->subsector->sector == targetsec)
|
if (players[i].mo->subsector->sector == sec)
|
||||||
;
|
;
|
||||||
else if (sec->flags & SF_TRIGGERSPECIAL_TOUCH)
|
else if (sec->flags & SF_TRIGGERSPECIAL_TOUCH)
|
||||||
{
|
{
|
||||||
boolean insector = false;
|
boolean insector = false;
|
||||||
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
||||||
{
|
{
|
||||||
if (node->m_sector == targetsec)
|
if (node->m_sector == sec)
|
||||||
{
|
{
|
||||||
insector = true;
|
insector = true;
|
||||||
break;
|
break;
|
||||||
|
|
48
src/p_spec.c
48
src/p_spec.c
|
@ -3606,16 +3606,49 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
|
||||||
{
|
{
|
||||||
if (roversector)
|
if (roversector)
|
||||||
{
|
{
|
||||||
if (!(players[i].mo->subsector->sector == roversector
|
if (players[i].mo->subsector->sector == roversector)
|
||||||
|| sector->flags & SF_TRIGGERSPECIAL_TOUCH))
|
;
|
||||||
|
else if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
|
||||||
|
{
|
||||||
|
boolean insector = false;
|
||||||
|
msecnode_t *node;
|
||||||
|
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
||||||
|
{
|
||||||
|
if (node->m_sector == roversector)
|
||||||
|
{
|
||||||
|
insector = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!insector)
|
||||||
goto DoneSection2;
|
goto DoneSection2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
goto DoneSection2;
|
||||||
|
|
||||||
if (!P_ThingIsOnThe3DFloor(players[i].mo, sector, roversector))
|
if (!P_ThingIsOnThe3DFloor(players[i].mo, sector, roversector))
|
||||||
goto DoneSection2;
|
goto DoneSection2;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!(players[i].mo->subsector->sector == sector
|
if (players[i].mo->subsector->sector == sector)
|
||||||
|| sector->flags & SF_TRIGGERSPECIAL_TOUCH))
|
;
|
||||||
|
else if (sector->flags & SF_TRIGGERSPECIAL_TOUCH)
|
||||||
|
{
|
||||||
|
boolean insector = false;
|
||||||
|
msecnode_t *node;
|
||||||
|
for (node = players[i].mo->touching_sectorlist; node; node = node->m_sectorlist_next)
|
||||||
|
{
|
||||||
|
if (node->m_sector == sector)
|
||||||
|
{
|
||||||
|
insector = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!insector)
|
||||||
|
goto DoneSection2;
|
||||||
|
}
|
||||||
|
else
|
||||||
goto DoneSection2;
|
goto DoneSection2;
|
||||||
|
|
||||||
if (special == 3 && !P_MobjReadyToTrigger(players[i].mo, sector))
|
if (special == 3 && !P_MobjReadyToTrigger(players[i].mo, sector))
|
||||||
|
@ -4429,8 +4462,9 @@ sector_t *P_ThingOnSpecial3DFloor(mobj_t *mo)
|
||||||
* \param player Player to check.
|
* \param player Player to check.
|
||||||
* \sa P_ThingOnSpecial3DFloor, P_PlayerInSpecialSector
|
* \sa P_ThingOnSpecial3DFloor, P_PlayerInSpecialSector
|
||||||
*/
|
*/
|
||||||
static void P_PlayerOnSpecial3DFloor(player_t *player, sector_t *sector, sector_t *originalsector)
|
static void P_PlayerOnSpecial3DFloor(player_t *player, sector_t *sector)
|
||||||
{
|
{
|
||||||
|
sector_t *originalsector = player->mo->subsector->sector;
|
||||||
ffloor_t *rover;
|
ffloor_t *rover;
|
||||||
fixed_t topheight, bottomheight;
|
fixed_t topheight, bottomheight;
|
||||||
|
|
||||||
|
@ -4683,7 +4717,7 @@ void P_PlayerInSpecialSector(player_t *player)
|
||||||
|
|
||||||
originalsector = player->mo->subsector->sector;
|
originalsector = player->mo->subsector->sector;
|
||||||
|
|
||||||
P_PlayerOnSpecial3DFloor(player, originalsector, originalsector); // Handle FOFs first.
|
P_PlayerOnSpecial3DFloor(player, originalsector); // Handle FOFs first.
|
||||||
if TELEPORTED return;
|
if TELEPORTED return;
|
||||||
|
|
||||||
P_RunSpecialSectorCheck(player, originalsector);
|
P_RunSpecialSectorCheck(player, originalsector);
|
||||||
|
@ -4698,7 +4732,7 @@ void P_PlayerInSpecialSector(player_t *player)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Check 3D floors...
|
// Check 3D floors...
|
||||||
P_PlayerOnSpecial3DFloor(player, loopsector, originalsector);
|
P_PlayerOnSpecial3DFloor(player, loopsector);
|
||||||
if TELEPORTED return;
|
if TELEPORTED return;
|
||||||
|
|
||||||
if (!(loopsector->flags & SF_TRIGGERSPECIAL_TOUCH))
|
if (!(loopsector->flags & SF_TRIGGERSPECIAL_TOUCH))
|
||||||
|
|
Loading…
Reference in a new issue